qinling072 发表于 2018-5-18 10:12:46

linux 安全应用 2

  一、selinux安全防护
  

  DAC    自主访问控制   (rwx/acl   用户自己可以修改)
  MAC   强制访问控制   (管理员对所有的资源负责)
  TCSEC标准定义的 MLS 多级安全
  SELinux   *
  1.1 selinux介绍
  美国国家安全局主导开发,
  一套强化Linux安全的MAC扩展模块
  集成到Linux内核(2.6及以上)
  操作系统提供可定制的策略、管理工具
  

  主要软件包:
  selinux-policy
  selinux-policy-targeted、
  libselinux-utils、libselinux-utils、
  coreutils、policycoreutils
  

  SELINUXTYPE=targeted
  推荐,仅保护最常见/关键的网络服务,其他不限制
  

  SELINUXTYPE=mls
  提供多层次、全面的安全防护策略
  需扩展软件包:
  selinux-policy-mls、mcstrans、
  policycoreutils-newrole
  

  启用selinux
  vim /etc/sysconfig/selinux
  SELINUX=enforcing
  SELINUXTYPE=targeted
  :wq
  reboot
  

  # sestatus
  SELinux status:               enabled
  SELinuxfs mount:                /selinux
  Current mode:                   enforcing
  Mode from config file:          enforcing
  Policy version:               24
  Policy from config file:      targeted
  # getenforce
  Enforcing
  #
  

  ————————————————————————————————————————————————
  

  上面的总结
  ————————————————————————————————————————————————
  selinux是基于linux内核版本在2.6及以上的一种内核安全防护扩展模块,由美国国家安全局研发出来的.
  # uname -r
  2.6.32-573.el6.x86_64
  MAC 强制访问控制(管理员管理资源)
  DAC自主访问控制(用户管理资源)rwx/acl
  

  # rpm -qa |grep -i selinux(查看系统是否有selinux安全防护)
  

  

  

  1.3查看当前系统selinux状态
  默认会有一个配置文件/etc/selinux/config,和链接/etc/sysconfig/selinux
  6 SELINUX=permissive(一般都是设置成这种,宽松警告)
  6 SELINUX=disabled
  6 SELINUX=enforcing
  10 SELINUXTYPE=strict
  10 SELINUXTYPE=targeted(一般这种,仅保护最常见/关键的网络服务,其他不限制)
  

  # getenforce
  Permissive
  # setenforce 1
  # getenforce
  Enforcing
  # sestatus
  SELinux status:               enabled
  SELinuxfs mount:                /selinux
  Current mode:                   enforcing
  Mode from config file:          permissive
  Policy version:               24
  Policy from config file:      targeted
  

  

  

  

  

  

  查看安全上下文
  文件   ll   -Z   文件名   ll   -Z    /etc/passwd
  目录   ll-dZ目录名   ll   -dZ   /
  进程   psaux-Z   |grephttpd
  

  # ls -Zd /root
  dr-xr-x---. root root system_u:object_r:admin_home_t:s0 /root
  # ls -Zd /var/www/html
  drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
  # ls -Zd /tmp
  drwxrwxrwt. root root system_u:object_r:tmp_t:s0       /tmp
  # ls -Zd /var/ftp/
  drwxr-xr-x. root root system_u:object_r:public_content_t:s0 /var/ftp/
  

  用户:角色:访问类型:选项...
  system_u:object_r:root_t:s0
  

  一般操作规律
  移动的文件,原有的上下文属性不变
  复制的文件,自动继承目标位置的上下文
  创建继承上级目录属性
  

  

  ++创建继承上级目录属性++
  # mkdir my
  # touch 1.txt
  # ll -Zd 1.txt
  -rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 1.txt
  # ll -Zd /root/my
  drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 /root/my
  # ll -Zd /root/
  dr-xr-x---. root root system_u:object_r:admin_home_t:s0 /root/
  

  

  +++复制的文件,自动继承目标位置的上下文 (保持属性拷贝也没用 还是会继承目标的属性)+++
  # cp /root/1.txt /tmp/
  # cp -r /root/my /tmp/
  # ll -Zd /tmp
  drwxrwxrwt. root root system_u:object_r:tmp_t:s0       /tmp
  # ll -Zd /tmp/1.txt
  -rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 /tmp/1.txt
  # ll -Zd /tmp/my
  drwxr-xr-x. root root unconfined_u:object_r:user_tmp_t:s0 /tmp/my
  # rm -fr /tmp/1.txt
  # cp -p /root/1.txt /tmp/
  # ll -Zd /tmp/1.txt
  -rw-r--r--. root root unconfined_u:object_r:user_tmp_t:s0 /tmp/1.txt
  

  +++移动的文件目录,保持原来的上下文属性不变+++
  # rm -fr /tmp/1.txt
  # rm -fr /tmp/my
  # mv /root/1.txt /tmp/
  # mv /root/my /tmp/
  # ll -Zd /tmp/1.txt
  -rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 /tmp/1.txt
  # ll -Zd /tmp/my
  drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 /tmp/my
  # ll -Zd /tmp
  drwxrwxrwt. root root system_u:object_r:tmp_t:s0       /tmp
  

  

  

  

  

  ————————————
  # ll -Z /var/www/html
  -rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 file.html
  -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 link.html
  -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 test.html
  

  

  # firefox httpd:192.168.4.254:/test.html (能打开)
  

  # firefox httpd:192.168.4.254:/file.html (不能打开) 不是网页内容属性文件
  

  修改文件的安全上下文可以用chcon和restorecon 效果一样。
  

  chcon 修改工具
  # chcon -t httpd_sys_content_t /var/www/html/file.html
  # ll -Z /var/www/html
  -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 1.html
  -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 a.txt
  -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 file.html
  -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 link.php
  -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 test.php
  

  restorecon 恢复工具
  # ll -Z /var/www/html
  -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 1.html
  -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 a.txt
  -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 file.html
  -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 link.php
  -rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 pp.html
  

  # cd /var/www/html/
  # restorecon pp.html
  # ll -Z /var/www/html
  -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 pp.html
  

  ————————————————————————
  修改文件的安全上下文
  chcon 工具
  -t,指定访问类型
  -u、-r,分别用来指定用户、角色
  -R,递归修改
  

  chcon   -t访问类型文件名   #修改某个文件的安全上下文
  chcon-R   -t访问类型目录名#批量修改安全上下文 (把目录下文件的都修改了上下文)
  

  chcon-thttpd_sys_content_t/var/www/html/c2.html
  

  恢复文件的安全上下文
  restorecon 工具恢复为所在位置的默认上下文属性
  -R,递归修改
  

  restorecon   d.html       #把这个文件恢复成当前父目录的上下文属性
  restorecon   目录名/d.html
  ————————————————————————————————————————————————
  1.4SELinux布尔值 (功能开关)
  getsebool    -a      #列出所有的bool值
  

  修改布尔值
  setsebool   -P    选项   on    #启用
  setsebool   -P    选项   off    #关闭
  

  setsebool   -P    选项=1    #启用
  setsebool   -P    选项=0    #关闭
  

  setsebool   -P    allow_ftpd_anon_writeon
  setsebool   -P   allow_ftpd_full_access   on
  

  安装selinux排错工具
  # yum-yinstallsetroubleshoot-server
  

  setroubleshoot-pluginssetroubleshoot
  

  # rpm-qa| grep setroubleshoot
  setroubleshoot-server-3.0.47-9.1.el6.x86_64
  setroubleshoot-3.0.47-9.1.el6.x86_64
  setroubleshoot-plugins-3.0.40-2.el6.noarch
  #
  #reboot
  

  调出图形工具抓取报错信息
  应用程序->系统工具->selinx .....
  sealter-b
  

  查看日志 执行命令,获取错误信息
  tail   -f    /var/log/message
  Jun 29 09:51:57 room3pc31 setroubleshoot: SELinux is
  

  preventing /usr/sbin/vsftpd from write access on the
  

  directory pubdir. For complete SELinux messages. run
  

  sealert -l 933b8efd-0743-48c3-b7b0-b95233747cbc
  

  #sealert -l 933b8efd-0743-48c3-b7b0-
  

  b95233747cbc
  

  

  

  

  

  

  

  

  

  +++++++++++++++++++++++++++++++++++
  二、加密、解密
  2.1 为什么要给数据加密?(机密性 完整性)
  

  (发送方)加密   明文-> 密文(加密就是把明文加密成密问)
  (接收方)解密   密文-> 明文   (解密就是把密问解密成明文)
  

  加密算法   明文 变成 密文的 转换规则
  算法可以是 一种计算规则、指令或代码(加密算法:可以是指令也可以是代码)
  

  

  2.2 加密方式
  对称加密:加密/解密用同一个密钥 (对称:加解密使用相同的算法) 简单不安全
  算法有:DES,Data Encryption Standard
  AES,Advanced Encryption Standard
  

  

  非对称加密加密/解密用不同的密钥(密钥对) (非对称加密:加解密使用不同算法 有密钥对)
  公钥和私钥
  加       解
  算法:RSA,Rivest Shamirh Adleman
  DSA,Digital Signature Algorithm
  

  

  

  加解密工具:
  gpg(开源的软件包 gnupg这个包提供) 对称加密解密非对称加解密数字签名
  

  # which gpg
  /usr/bin/gpg
  # rpm -qf /usr/bin/gpg
  gnupg2-2.0.14-8.el6.x86_64
  # gpg --help查帮助(支持的算法选项)
  

  ————————
  1.对称加密解密 (lucy和tom,都是真机上用户密码都是123, 切到lucy和tom时候只能ssh -X lucy@192.168.4.254不能su - tom,因为环境不对。)
  ————————
  加密(发送方)lucy:
  

  解密(接受方)tom:
  

  # ssh -X lucy@"localhost"
  lucy@localhost's password:
  /usr/bin/xauth:creating new authority file /home/lucy/.Xauthority
  $
  $ pwd
  /home/lucy
  $ echo 123456 >lucy.txt
  $ ls
  lucy.txt
  $ gpg -c lucy.txt
  gpg: 已创建目录‘/home/lucy/.gnupg’
  gpg: 新的配置文件‘/home/lucy/.gnupg/gpg.conf’已建立
  gpg: 警告:在‘/home/lucy/.gnupg/gpg.conf’里的选项于此次运行期间未被使用
  gpg: 钥匙环‘/home/lucy/.gnupg/pubring.gpg’已建立
  can't connect to `/home/lucy/.gnupg/S.gpg-agent': 没有那个文件或目录
  gpg-agent: 已创建目录‘/home/lucy/.gnupg/private-keys-v1.d’
  $ ls
  lucy.txtlucy.txt.gpg
  $ cp lucy.txt.gpg/tmp/
  

  # ssh -X tom@192.168.4.254
  tom@192.168.4.254's password:
  /usr/bin/xauth:creating new authority file /home/tom/.Xauthority
  $
  $ pwd
  /home/tom
  $ cd /tmp
  $ ls
  1.txt                  orbit-gdm
  da                     orbit-root
  evince-9817            pulse-2UwZ1k19YbcT
  gedit.root.3964521678pulse-5sTJqfwYxhm6
  keyring-rOpg63         user.txt
  keyring-vP2cP1         virtual-root.lwcQAF
  lu                     VMwareDnD
  lucy.txt.gpg         vmware-root
  my                     wireshark_2_interfaces_20170226094957_f2G8IO
  myvm.xml               yum_save_tx-2017-03-07-11-11_INSzh.yumtx
  $ gpg -d lucy.txt.gpg
  gpg: 已创建目录‘/home/tom/.gnupg’
  gpg: 新的配置文件‘/home/tom/.gnupg/gpg.conf’已建立
  gpg: 警告:在‘/home/tom/.gnupg/gpg.conf’里的选项于此次运行期间未被使用
  gpg: 钥匙环‘/home/tom/.gnupg/secring.gpg’已建立
  gpg: 钥匙环‘/home/tom/.gnupg/pubring.gpg’已建立
  gpg: 3DES 加密过的数据
  can't connect to `/home/tom/.gnupg/S.gpg-agent': 没有那个文件或目录
  gpg-agent: 已创建目录‘/home/tom/.gnupg/private-keys-v1.d’
  gpg: 以 1 个密码加密
  123456
  gpg: 警告:报文未受到完整的保护
  

  

  ————————
  2.非对称加解密:【(lucy和tom,都是真机上用户密码都是123, 切到lucy和tom时候只能ssh -X lucy@192.168.4.254不能su - tom,因为环境不对。)要图形界面】
  ————————
  1)lucy
  -传建密钥对
  -导出公钥
  2)tom
  导入lucy的公钥
  使用公钥加密发送文件
  lucy使用私钥解密
  实验:
  $ rm -fr .gnupg/(有就一般都先删掉 等创建公钥时会自动生成)
  $ gpg --gen-key
  gpg: 钥匙环‘/home/lucy/.gnupg/secring.gpg’已建立
  请选择您要使用的密钥种类:
  (1) RSA and RSA (default)
  (2) DSA and Elgamal
  (3) DSA (仅用于签名)
  (4) RSA (仅用于签名)
  您的选择?
  .....(一路默认 名字那里做个区分写真实的,后面还会用到)
  .....
  真实姓名:panglj
  电子邮件地址:plj
  注释:O
  您选定了这个用户标识:
  “panglj (O) <plj@163>”
  更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?o
  您需要一个密码来保护您的私钥。(输入密码,记住这个密码)等它生成
  .................
  密钥指纹 = 87F8 DE00 93C6 3D6A 6AF81B16 94CD FC50 73FA C552
  uid                  panglj (O) <plj@163>
  sub   2048R/86A8B557 2017-03-07
  公钥和私钥已经生成并经签名。(生成)
  

  $ pwd
  /home/lucy/.gnupg
  $ ls
  gpg.conf         pubring.gpg   random_seedtrustdb.gpg
  private-keys-v1.dpubring.gpg~secring.gpg
  $ gpg -a --export>/tmp/lucy.pub (把公钥拷贝到公共目录。让tom拷贝)
  

  

  $ rm -fr .gnupg/   (tom用户先把自己的这个目录删了,把lucy公钥拷贝到自己加下会自动生成该目录)
  $ gpg --import/tmp/lucy.pub (拷贝lucy公钥)
  .............
  $ ls -a
  .   .bash_history.bash_profile.gnome2.mozilla
  ...bash_logout   .bashrc      .gnupg   .Xauthority
  $ cd .gnupg/
  $ ls
  gpg.confpubring.gpgpubring.gpg~secring.gpgtrustdb.gpg
  $ echo "1234567890" >tom.txt(tom写一个文件)
  $ gpg -e -r panglj tom.txt   把该文件加密(用户名是做密钥对时的留的用户名)
  ........................(输入yes 按提示)
  $ ls
  gpg.conf   pubring.gpg~secring.gpgtom.txt.gpg
  pubring.gpgrandom_seed   tom.txt      trustdb.gpg
  $ cp tom.txt.gpg/tmp/    (将加密好的复制到公共目录下,让lucy读取)
  

  $ gpg -d /tmp/tom.txt.gpg         (在页面上显示解密后的内容,需要输做密钥时设的密码)
  $ gpg -d /tmp/tom.txt.gpg >/home/lucy/t.txt (把解密后的内容定向到一个文件中再查看)
  $ ls
  lucy.txtlucy.txt.gpgt.txt
  $ cat t.txt
  1234567890
  

  

  3.数字签名(私钥签名,公钥验证签名)
  lucytom
  

  lucy:
  使用私钥对文件做数字签名
  把签名文件和源文件发送给对方
  

  tom
  使用公钥验证签名文件
  验证文件是否是声称持有者发送过来的
  

  

  $ echo "1212" >lu.txt
  $ gpg -b lu.txt    (输入之前设置的密码做成签名)
  您需要输入密码,才能解开这个用户的私钥:“panglj (O) <plj@163>”
  2048 位的 RSA 密钥,钥匙号 73FAC552,建立于 2017-03-07
  

  can't connect to `/home/lucy/.gnupg/S.gpg-agent': 没有那个文件或目录
  $ ls
  lucy.txtlucy.txt.gpglu.txtlu.txt.sigt.txt
  $ cp lu.txt /tmp/(把文件和文件签名放到公共目录下)
  $ cp lu.txt.sig /tmp
  

  $ cat /tmp/lu.txt       (tom可以看到文件内容和从文件签名看是否有损坏,内容是否有更改)
  1212
  $ gpg --verify /tmp/lu.txt.sig
  gpg: 于 2017年03月07日 星期二 15时29分17秒 CST 创建的签名,使用 RSA,钥匙号 73FAC552
  gpg: 完好的签名,来自于“panglj (O) <plj@163>”
  gpg: 警告:这把密钥未经受信任的签名认证!
  gpg:       没有证据表明这个签名属于它所声称的持有者。
  主钥指纹: 87F8 DE00 93C6 3D6A 6AF81B16 94CD FC50 73FA C552
  

  

  

  ————————————————————————————————————————————
  

  

  

  

  

  

  

  

  ——————————————————————————————————————
  

  

  使用md5sum校验工具验证文件完整性特点:当文件内容没变时md5生成的校验值一值保持同样长度不变,否则变化。(md5和gpg数字签名相比只能验证文件内容是否有更改,不能验证是谁发的)
  # cat a.txt
  root:x:0:0:root:/root:/bin/bash
  bin:x:1:1:bin:/bin:/sbin/nologin
  # md5sum a.txt
  2acf01edaaee1079d83086a3ed3305a1a.txt
  # md5sum a.txt
  2acf01edaaee1079d83086a3ed3305a1a.txt
  # echo "123" >>a.txt
  # md5sum a.txt
  4795332faee87af3d9685ac07b05bc56a.txt
  # echo abc
  abc
  # echo abc |md5sum
  0bee89b07a248e27c83fc3d5951213c1-
  # echo abc |md5sum
  0bee89b07a248e27c83fc3d5951213c1-
  # echo abc |md5sum
  0bee89b07a248e27c83fc3d5951213c1-
  # echo abcd |md5sum
  f5ac8127b3b6b85cdc13f237c6005d80-
  

  保护信息的完整性
  信息摘要:基于输入的信息生成长度较短、位数固定的散列值
  

  Hash散列技术,用于信息摘要
  MD5,Message Digest Algorithm 5
  SHA,Secure Hash Algorithm
  

  sha1suma.txt
  md5suma.txt
  

  gnupg介绍
  GnuPG,GNU Privacy Guard
  最流行的数据加密、数字签名工具软件
  

  # which gpg
  /usr/bin/gpg
  # rpm -qf /usr/bin/gpg
  gnupg2-2.0.14-8.el6.x86_64
  #
  

  gpg --help查帮助(支持的算法选项)
  

  

  对称加/解密过程 (加/解密 使用相同密钥)
  

  加密
  head-2/etc/passwd   > a.txt
  gpg-ca.txt   (提示输入密码)
  

  lsa.txt.gpg加密后的文件
  rm-rfa.txt
  

  

  解密
  gpg-da.txt.gpg   >/tmp/user.txt (提示输入密码)
  cat/tmp/user.txt
  ++++++++++++++++++++++++++++++
  非对称加/解密过程 (公钥加密/私钥解密)
  userB 要userA 使用非对称方式加密传输数据
  

  1 userB   生成密钥对
  gpg--gen-key (生成私钥时要求输入相关信息)
  ls~/.gnupg/
  

  

  ddif=/dev/zeroof=/dev/null    bs=1M count=500
  

  2 userB 导出自己的公钥
  gpg-a--export    >   /tmp/UserB.pub
  suerB 把 公钥 给userA(不同机器间传输数据)
  

  

  3userA 导入userB的公钥
  gpg--import/tmp/UserB.pub
  ls~/.gnupg/
  

  

  4 userA 使用公钥加密文件
  echo12344555> /tmp/clear.txt
  gpg-e-r真实姓名   /tmp/clear.txt
  panglj
  

  userA把加密文件传给userB (不同机器间传输数据)
  

  5 userB 使用自己的私钥解密
  gpg-d/tmp/clear.txt.gpg>dclear.txt
  catdclear.txt
  +++++++++++++++++++++++++++++++++++
  GPG软件签名与验证
  软件签名与验证过程
  软件官方以私钥对软件包执行数字签名
  用户下载软件包、软件官方的公钥
  以官方公钥验证软件包签名,确保软件完整性
  

  

  gpg-b   生成一份分离的签名
  gpg--verify               验证签名
  gpg --fingerprint          列出密钥和指纹
  

  userB
  head -3/etc/passwd   > userb.txt
  gpg-buserb.txt
  

  lsuserb.txt.sig(签名文件)
  

  mv   userb.txtuserb.txt.sig   /tmp/
  

  userA
  cd   /tmp/
  gpg--verify   userb.txt.sig
  $ gpg --verify user2.txt.sig
  gpg: 于 2016年06月29日 星期三 14时59分43秒 PHT 创建的
  

  签名,使用 RSA,钥匙号 A6D34AA0
  gpg: 完好的签名,来自于“panglj (teacher)
  

  <plj@tedu.cn>”
  gpg: 警告:这把密钥未经受信任的签名认证!
  gpg:       没有证据表明这个签名属于它所声称的持有者。
  主钥指纹: 87AB 6994 3F35 E6EA 4EA7502B CCA6
  

  5CA3 A6D3 4AA0
  $
  

  echoaaaa >>user2.txt
  $ gpg --verify user2.txt.sig
  gpg: 于 2016年06月29日 星期三 14时59分43秒 PHT 创建的
  

  签名,使用 RSA,钥匙号 A6D34AA0
  gpg: 已损坏的签名,来自于“panglj (teacher)
  

  <plj@tedu.cn>”
  $
  

  

  

  $ gpg--fingerprint
  /home/userB/.gnupg/pubring.gpg
  ------------------------------
  pub   2048R/A6D34AA0 2016-06-29
  密钥指纹 = 87AB 6994 3F35 E6EA 4EA7502B CCA6
  

  5CA3 A6D3 4AA0
  uid                  panglj (teacher) <plj@tedu.cn>
  sub   2048R/6CD5F831 2016-06-29
  

  $
  主钥指纹: 87AB 6994 3F35 E6EA 4EA7502B CCA6
  

  5CA3 A6D3 4AA0
  

  密钥指纹 = 87AB 6994 3F35 E6EA 4EA7502B CCA6
  

  5CA3 A6D3 4AA0
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  +++++++++++++++++++++++++++++++++++
  

  

  搭建CA服务器
  1   CA 介绍 (CA,Certificate Authority)
  数字证书授权中心
  被通信双方信任的、独立的第三方机构
  负责证书颁发、验证、撤销等管理工作
  

  国内常见的CA机构
  中国金融认证中心(CFCA)
  中国电信安全认证中心(CTCA)
  北京数字证书认证中心(BJCA)
  

  CA用来给服务器颁发数字证书
  一般也可自己搭建一个私有CA服务器
  

  

  openssl 加密工具
  #opensslenc-des3-e-inf1.txt-outf1.txt.enc加密
  # opensslenc-des3-d-inf1.txt.enc-outf1.txt解密
  

  

  2CA做什么(发数字证书的机构)
  

  

  PKI体系的基本组成
  权威认证机构(CA)
  数字证书库、密钥备份及恢复系统
  证书作废系统、应用接口
  

  

  对称加密
  enc 算法-e-in输入文件-out输出文件
  enc 算法-d-in输入文件-out输出文件
  

  # opensslenc-des3-e-inf1.txt-out
  

  f1.txt.enc
  enter des-ede3-cbc encryption password:
  

  //设置口令
  Verifying - enter des-ede3-cbc encryption password:
  

  # opensslenc-des3-d-inf1.txt.enc-
  

  outf1.txt
  enter des-ede3-cbc decryption password:
  

  ————————————————————————————————————————
  

  ————————————————————————————————————————
  

  CA机构(CA服务器)是用来给公司服务器颁发数字证书的。有权威的也有私有自己搭建的。
  

  使用IP地址是X.X.X.88主机做CA服务器
  整体部署思路
  第一步:配置CA签署环境(给客户端发证的默认配置)
  /etc/pki/tls/openssl.cnf
  第二步:为CA服务器生成私钥(创建密钥对)
  第三步:为CA服务器创建根证书 (生成自己的根证书文件)
  第四步:发布根证书文件(把自己的根证书共享给客户端)
  第五步:客户端下载根证书
  

  # man openssl
  ++++++++++++++++++++++++++++++++
  

  1.部署签发环境:(做一个私有CA服务器用,来给别的公司服务器发数字证书)192.168.4.99
  # ls /etc/pki/tls/openssl.cnf
  /etc/pki/tls/openssl.cnf
  # rpm -qf /etc/pki/tls/openssl.cnf
  openssl-1.0.1e-42.el6.x86_64
  

  # cd /etc/pki/CA/
  # touchindex.txt   (证书的内容保存文件)
  # ls
  certscrlindex.txtnewcertsprivate
  # echo 01 > serial
  # cat serial(创建一个文件用来记录证书的个数,做第二个证书的时候会自动加)
  01
  # ls
  certscrlindex.txtnewcertsprivateserial
  

  [ CA_default ]
  41
  42 dir             = /etc/pki/CA         # Where everything is kept
  43 certs         = $dir/certs            # Where the issued certs are kept
  44 crl_dir         = $dir/crl            # Where the issued crl are kept
  45 database      = $dir/index.txt      # database index file.
  

  48 new_certs_dir   = $dir/newcerts         # default place for new certs.
  

  50 certificate   = $dir/my-ca.crt      # The CA certificate
  51 serial          = $dir/serial         # The current serial number
  52 crlnumber       = $dir/crlnumber      # the current crl number
  

  54 crl             = $dir/crl.pem          # The current CRL
  55 private_key   = $dir/private/my-ca.key # The private key
  56 RANDFILE      = $dir/private/.rand    # pri
  

  130 countryName_default             = CN
  

  135 stateOrProvinceName_default   = beijing
  

  

  141 0.organizationName_default      = tarena
  

  148 organizationalUnitName_default= ope
  

  

  2.创建私钥文件:/etc/pki/CA/private/my-ca.key
  # pwd
  /etc/pki/CA/private
  

  # openssl genrsa -des3 2048 >my-ca.key(创建私钥,并导入到私钥文件,记住密码)
  Generating RSA private key, 2048 bit long modulus
  ......................+++
  ..+++
  e is 65537 (0x10001)
  Enter pass phrase:
  Verifying - Enter pass phrase:
  

  3.使用私钥创建根证书文件
  

  # cd /etc/pki/CA
  # openssl req -new -x509 -key /etc/pki/CA/private/my-ca.key -days 365 > my-ca.crt   (使用私钥创建根证书文件   -x509格式)
  # ls
  certscrlindex.txtmy-ca.crtnewcertsprivateserial
  # cat my-ca.crt(证书生成)
  -----BEGIN CERTIFICATE-----
  MIID1zCCAr+gAwIBAgIJALAPCx/Wdm/lMA0GCSqGSIb3DQEBBQUAMIGBMQswCQYD
  VQQGEwJDTjEQMA4GA1UECAwHYmVpa
  -----END CERTIFICATE-----
  

  

  4.把证书文件共享给客户端 (就是把CA私有机构给服务器做的根证书发给该服务 但这里CA服务器和认证的一台,效果是一样的把根证书文件共享到服务器的目录下)
  

  # yum -y install httpd
  # mkdir /var/www/html/ca
  # cp my-ca.crt/var/www/html/ca/
  # ls /var/www/html/ca/my-ca.crt
  /var/www/html/ca/my-ca.crt
  # ls /var/www/html/ca/my-ca.crt -l
  -rw-r--r--. 1 root root 1391 3月   6 23:37 /var/www/html/ca/my-ca.crt
  # service httpd start
  # chkconfig httpd on
  

  5.客户端下载根证书
  

  $ ping 192.168.4.99
  $ firefox http://192.168.4.99/ca
  在打开的页面中 下载证书。
  

  ——————————————————————————————————————————————————————————————————————
  ___________________________________________________________________________________________________________________________________________________________
  

  

  

  一 配置网站HTTP SSL (192.168.4.100)
  网站服务器:
  1.运行网站服务
  # yum -y install httpd
  # service httpd restart
  # chkconfig httpd on
  

  2.创建私钥文件
  # cd /etc/pki/tls/private/
  # openssl genrsa 2048 > www.key (生成私钥,什么服务私钥就起什么名好记,记住密码) 1生成密码字符最好是1024的整数倍
  # ls
  www.key
  # cat www.key
  -----BEGIN RSA PRIVATE KEY-----
  MIIEowIBAAKCAQEApgz2xBeEs151p3dMGmj13pbicS5JGd1cMWiMryUjaRgJPRWF
  ..
  

  

  3.创建证书请求文件
  #cd /etc/pki/tls/private/
  # openssl req -new -key www.key > /root/www.csr
  .........
  Common Name (eg, your name or your server's hostname) []:stu.tedu.cn(填的一定是公司服务器主机名 /etc/sysconfig/network 所对应的)
  ........
  

  4.把证书请求文件上传给CA服务器
  # scp /root/www.csr root@192.168.4.99:/root/
  

  

  

  

  二.CA服务器:(192.168.4.99)
  签收数据证书
  # ls /root/www.csr
  /root/www.csr
  # cd /etc/pki/CA/
  # ls
  certscrlindex.txtmy-ca.crtnewcertsprivateserial
  # cat index.txt
  # cat serial
  01
  # cd certs/
  # ls
  

  # openssl ca -in /root/www.csr> www.crt(输入密码 按y)
  # cat serial
  02
  # cat index.txt
  V180306163836Z01unknown/C=CN/ST=beijing/O=tarena/OU=ope
  # ls
  www.csr
  # cat www.crt
  Certificate:
  ..............
  

  

  三.把证书下发给web服务器(192.168.4.99)
  # scp www.crt root@192.168.4.100:/root/
  

  

  

  四.给网站加密:(web服务器192.168.4.100)
  

  

  #netstat-utnalp| grep :443(此时没有443端口)
  

  #rpm-qmod_ssl
  

  #yum-yinstallmod_ssl
  

  #vim /etc/httpd/conf.d/ssl.conf
  18   Listen443
  <VirtualHost_default _:443>
  SSLEngine on
  105 SSLCertificateFile /etc/pki/tls/certs/www.crt
  112 SSLCertificateKeyFile /etc/pki/tls/private/www.key
  </VirtualHost>
  :wq
  

  #mv /root/www.crt /etc/pki/tls/certs/
  # service httpd stop
  

  # service httpd stop
  # service httpd start
  

  #netstat-utnalp| grep :443 (能够查看到443端口)
  

  #netstat-utnalp| grep :80 (能够查看到80端口)
  # echo "123" >/var/www/html/test.html
  

  

  五(客户机测试192.168.4.254)
  

  

  # vim /etc/hosts
  

  192.168.4.100stu.tedu.cn   stud
  # firefox http://stu.tedu.cn/test.html (能打开)
  # firefox http://192.168.4.100/test.html (能打开)
  # firefox https://stu.tedu.cn/test.html(能打开,让先下证书)
  

  

  (生产工作中,客户访问web加密网站,下载根证书在CA下或在本地web下,是程序员在网页代码中写的,运维只需把服务搭出来。就像客户在淘宝支付时,需要下一个认证/插件,在哪个位置下一样,这是程序员指定的)
  

  

  六.客户机测试 (192.168.4.254)
  1 从CA下载根证书 (http://CA-ip/ca)
  #firefox http://192.168.4.99/ca
  

  

  2访问
  # firefox https://stu.tedu.cn/test.html(不用再在这下载证书,直接打开,打开的是https)
  # firefox http://stu.tedu.cn/test.html (也直接打开打开的是http)
  

  {80 http://web-ip/test.html
  443 https://web-ip/test.html}
  

  七.地址重写:(web网站192.168.4.100)
  

  配置网站服务器把接收到的访问80端口的请求自动重定向到443端口 (http---->https)
  vim/etc/httpd/conf/httpd.conf   (也可在 /etc/httpd/conf/ssl.conf写,都一样)
  .....
  <IfModule ssl_module>
  SSLRandomSeedstartupbuiltin
  SSLRandomSeedconnectbuiltin
  </IfModule>
  RewriteEngineon
  RewriteCond%{SERVER_PORT}!^443$
  RewriteRule(.*)https://%{SERVER_NAME}/$1
  :wq
  /etc/init.d/httpd restart
  

  

  八.客户机测试 (192.168.4.254)
  # firefox https://stu.tedu.cn/test.html(打开的是https)
  # firefox http://stu.tedu.cn/test.html (打开的是http)
  

  ——————————————————————————————————————————————————————————————————————————————
  

  

  2.邮件服务TLS/SSL (192.168.4.101)
  

  邮件服务器的配置
  2.1运行收邮件的服务 service dovecot start
  2.2运行发邮件的服务 service postfix start
  2.3测发能否收发本地域的邮件 localhost
  jim@localhost 发件人
  tom@localhost 收件人
  2.4传建私钥文件 mail.key
  #openssl genrsa 2048 > mail.key
  2.5创建证书请求文件 mail.csr
  2.6把证书请求文件上传给CA服务器
  

  CA服务器的配置
  1 签发数字证书 mail.crt
  2 把证书下发给mail服务器
  

  3 设置邮件服务器在运行时加载私钥文件和数字文件
  3.1配置收邮件服务 110   143   995    993
  pop3 imappop3s imaps
  

  3.2配置发邮件服务 stmp25
  3.3重启服务
  

  4配置客户端
  在客户端软件里配置连接邮件服务时,选择使用的端口号
  

  

  +++++++++++++
  实验:
  # yum -y install postfix dovecot
  # rpm -q postfix
  postfix-2.6.6-6.el6_5.x86_64
  # rpm -q dovecot
  dovecot-2.0.9-19.el6.x86_64
  

  # vim /etc/postfix/main.cf
  419 home_mailbox = Maildir/
  

  # pwd
  /etc/dovecot/conf.d
  # vim 10-mail.conf
  24 mail_location = maildir:~/Maildir
  

  # service postfix start
  # service dovecot start
  

  # netstat -anptu |grep :25
  tcp      0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1765/master
  tcp      0      0 ::1:25                      :::*                        LISTEN      1765/master
  

  # netstat -anptu |grep dovecot
  tcp      0      0 0.0.0.0:993   imaps(加密后)            0.0.0.0:*                   LISTEN      2872/dovecot
  tcp      0      0 0.0.0.0:995   pop3s            0.0.0.0:*                   LISTEN      2872/dovecot
  tcp      0      0 0.0.0.0:110   (pop3)            0.0.0.0:*                   LISTEN      2872/dovecot
  tcp      0      0 0.0.0.0:143   (imap)            0.0.0.0:*                   LISTEN      2872/dovecot
  tcp      0      0 :::993                      :::*                        LISTEN      2872/dovecot
  tcp      0      0 :::995                      :::*                        LISTEN      2872/dovecot
  tcp      0      0 :::110                      :::*                        LISTEN      2872/dovecot
  tcp      0      0 :::143                      :::*                        LISTEN      2872/dovecot
  

  

  

  # cd /etc/dovecot/
  # cd conf.d/
  # vim 10-mail.conf
  # vim 10-ssl.conf
  # sed -n '12,13p' 10-ssl.conf
  ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
  ssl_key = </etc/pki/dovecot/private/dovecot.pem
  # ls /etc/pki/dovecot/certs/
  dovecot.pem
  # ls /etc/pki/dovecot/private/
  dovecot.pem
  

  # useradd tom
  # useradd jim
  # echo 123 |passwd --stdin tom
  更改用户 tom 的密码 。
  passwd: 所有的身份验证令牌已经成功更新。
  # echo 123 |passwd --stdin jim
  更改用户 jim 的密码 。
  passwd: 所有的身份验证令牌已经成功更新。
  

  

  # yum -y install telnet (下载连接邮件服务器工具)
  

  

  # telnet localhost 25 (发邮件 jim)
  Trying ::1...
  Connected to localhost.
  

  

  

  # telnet localhost 110   (接邮件 tom)
  Trying ::1...
  Connected to localhost.
  Escape character is '^]'.
  +OK Dovecot ready.
  user tom
  +OK
  pass 123
  +OK Logged in.
  list
  +OK 0 messages:
  .
  quit
  

  

  # openssl genrsa 2048 > mail.key(传建私钥文件)
  

  

  # openssl req -new -key mail.key > mail.csr (生成证书请求文件)
  

  # cd /etc/pki/CA/
  # cat serial
  02
  # openssl ca -in /root/mail.csr   > mail.crt
  # cat index.txt
  V180306163836Z01unknown/C=CN/ST=beijing/O=tarena/OU=ope/CN=stu.tedu.cn/emailAddress=jing@tedu.cn
  V180307190945Z02unknown/C=CN/ST=beijing/O=tarena/OU=ope/CN=stu.tedu.cn/emailAddress=yaya@tedu.cn
  # cat serial
  03
  # scp mail.crt root@192.168.4.101:/root/   (把证书请求文件上传给CA服务器)
  

  

  

  

  # vim /etc/dovecot/conf.d/10-ssl.conf
  12 ssl_cert = </etc/pki/dovecot/certs/mail.crt
  13 ssl_key = </etc/pki/dovecot/private/mail.key
  # sed -n '12,13p' /etc/dovecot/conf.d/10-ssl.conf
  ssl_cert = </etc/pki/dovecot/certs/mail.crt
  ssl_key = </etc/pki/dovecot/private/mail.key
  # cp /root/mail.key /etc/pki/dovecot/private/
  # cp /root/mail.crt /etc/pki/dovecot/certs
  # service dovecot restart
  停止 Dovecot Imap:                                        [确定]
  正在启动 Dovecot Imap:                                    [确定]
  # netstat -anptu |grep dovecot
  

  

  

  # postconf (查看帮助,配置项怎么写) 发信
  # vim /etc/postfix/main.cf
  

  675 readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
  676
  677 smtpd_use_tls = yes
  678 smtpd_tls_key_file = /etc/pki/tls/private/mail.key
  679 smtpd_tls_cert_file = /etc/pki/tls/certs/mail.crt
  

  

  

  

  

  

  

  

  

  

  

  

  ————————————————————————————————————————————————————
  

  3扫描与抓包
  3.1端口扫描(nmap)
  3.2抓包(tcpdump)
  

  3.3协议分析工具(wireshark)
  

  扫描方式:scan主动探测 sniff被动监听capture 数据包抓包
  

  

  

  1.常用格式:(扫描)
  # yum -y install nmap
  # which nmap
  /usr/bin/nmap
  # man nmap
  

  # nmap -sP 172.40.55.244
  Starting Nmap 5.51 ( http://nmap.org ) at 2017-03-08 14:22 CST
  Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn   (检查这台主机是否在现,没有)
  Nmap done: 1 IP address (0 hosts up) scanned in 0.44 seconds
  

  # nmap -sP 172.40.55.127 (检查这台主机是否在现)
  Starting Nmap 5.51 ( http://nmap.org ) at 2017-03-08 14:19 CST
  Nmap scan report for 172.40.55.127
  Host is up (0.00019s latency).          (检查这台主机是否在现)
  MAC Address: FC:AA:14:CD:F5:AC (Unknown)
  Nmap done: 1 IP address (1 host up) scanned in 0.06 seconds
  # ping 172.40.55.127
  PING 172.40.55.127 (172.40.55.127) 56(84) bytes of data.
  64 bytes from 172.40.55.127: icmp_seq=1 ttl=64 time=0.928 ms
  ^C
  --- 172.40.55.127 ping statistics ---
  

  # nmap -A 172.40.55.127 (整台扫描)
  # namp -sT -p 80 172.40.55.127 172.40.55.104
  

  # nmap -sT -p 20-80,443 172.40.55.127 172.40.55.104
  

  # nmap -sT -p 20-80,443172.40.55.104-110
  

  # nmap -sU -p 20-80,443172.40.55.0/24
  

  # nmap -sP   172.40.55.0/24
  

  # nmap -sP -iL ip.txt   (ip.txt 中先写入ip)
  # nmap -sT -p 110-iL ip.txt
  

  # nmap -sP   172.40.55.100-130 --exclude 172.40.55.103-105
  # nmap -sT -p 80,110   172.40.55.100-130 --exclude 172.40.55.103-105
  

  # nmap -sT -p 80,110   172.40.55.100-130 --excludefile ip.txt (不扫描这个文件中的)
  

  # nmap -sT -p 80172.40.55.119 |grep open
  80/tcp openhttp
  

  

  

  

  

  

  

  

  ip地址172.40.55.$ip
  

  重复执行的操作:
  vim httpd.sh
  #!/bin/bash
  while :
  do
  x=0
  for ip in 103 105 107 127 110 102
  do
  

  nmap -sT -p 80 172.40.55.$ip | grep -q open
  if [ $? -eq 0 ];then
  echo "172.40.55.$ip   web is ok"
  else
  echo "172.40.55.$ip web is stop"
  echo "172.40.55.$ip>> /tmp/ipdown.txt
  let x++
  

  fi
  done
  

  mail -s "weberror" root < /tmp/ipdown.txt
  

  echo "web down host is $x"
  

  sleep 600
  

  done
  

  

  chmod +x httpd.sh
  

  httpd.sh &
  

  +++++++++++++++++++++++++++
  

  vim httpd.sh
  #!/bin/bash
  

  x=0
  echo "web down is " > /tmp/ipdown.txt
  for ip in 103 105 107 127 110 102
  do
  

  nmap -sT -p 80 172.40.55.$ip | grep -q open
  if [ $? -eq 0 ];then
  echo "172.40.55.$ip   web is ok"
  else
  echo "172.40.55.$ip web is stop"
  echo "172.40.55.$ip>> /tmp/ipdown.txt
  let x++
  fi
  done
  lines=`wc -l/tmp/ipdown.txt |awk '{print $1}' `
  if [ $lines -gt 1 ];then
  mail -s "weberror" root < /tmp/ipdown.txt
  fi
  

  echo "web down host is $x"
  

  rm -rf /tmp/ipdown.txt
  

  :wq
  

  chmod +x httpd.sh
  

  cron -e
  */10****/root/httpd.ssh
  service crond restart
  

  查看邮件:
  # vim /etc/postfix/main.cf
  419 home_mailbox = Maildir/
  

  # mail -f /home/httpadmin/
  .bash_logout   .bashrc      Maildir/
  .bash_profile.gnome2/       .mozilla/
  # mail -f /home/httpadmin/Maildir/
  Heirloom Mail version 12.4 7/29/08.Type ? for help.
  "/home/httpadmin/Maildir/": 1 message 1 new
  >N1 root                  Wed Mar8 20:0020/589   "weberror"
  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2.TCPDUMP抓包(tcpdump)
  

  # which tcpdump
  /usr/sbin/tcpdump
  # rpm -qf /usr/sbin/tcpdump
  tcpdump-4.0.0-5.20090921gitdf3cb4.2.el6.x86_64
  # yun -y install tcpdump
  

  # mantcpdump
  

  

  # tcpdump(开始抓整个)
  # tcpdump-A(抓的显示出屏幕上)
  # tcpdump-A -w /tmp/a.cap(抓 w保存文件里)
  # tcpdump-A -r /tmp/a.cap   (r读出来)
  

  

  -i    -A    -w   -r
  # tcpdump-A -w /tmp/1.txttcp port 110
  

  # tcpdump-A -r /tmp/1.txt|grep -i--color user
  # tcpdump-A -r /tmp/1.txt|grep -i--color pass
  

  # tcpdump-A tcp portrange 20-21
  # tcpdump-A tcp portrange 20-21 and host 192.168.4.101 (只抓101这台)
  

  

  ____________________________________________________________________________________________________________________________________________________________
  ————————————————————————————————————————————————————————————————————————
  抓包实验,192.168.4.101开启抓包,让192.168.4.7访问它ftp抓把。保存在文件中。
  # tcpdump -A -w /tmp/t.txt tcp portrange 20-21
  tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
  ^C36 packets captured
  

  # ftp 192.168.4.101
  Connected to 192.168.4.101 (192.168.4.101).
  220 (vsFTPd 2.2.2)
  Name (192.168.4.101:root): ftp
  331 Please specify the password.
  Password:
  230 Login successful.
  Remote system type is UNIX.
  Using binary mode to transfer files.
  ftp> ls
  227 Entering Passive Mode (192,168,4,101,197,237).
  150 Here comes the directory listing.
  -rw-r--r--    1 0      0               4 Mar 08 00:48 1.txt
  drwxr-xr-x    2 0      0            4096 Mar 062015 pub
  226 Directory send OK.
  ftp> get 1.txt
  local: 1.txt remote: 1.txt
  227 Entering Passive Mode (192,168,4,101,106,217).
  150 Opening BINARY mode data connection for 1.txt (4 bytes).
  226 Transfer complete.
  4 bytes received in 0.000489 secs (8.18 Kbytes/sec)
  ftp> quit
  221 Goodbye.
  

  

  # tcpdump -A -w /tmp/t.txt tcp portrange 20-21
  tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
  

  (按ctrl+c,保存退出)
  

  ^C36 packets captured
  36 packets received by filter
  0 packets dropped by kernel
  

  # tcpdump -A -r /tmp/t.txt(把抓到的在屏幕中显示)
  reading from file /tmp/t.txt, link-type EN10MB (Ethernet)
  09:00:17.542583 IP 192.168.4.7.58623 > 192.168.4.101.ftp:
  E..<.4@.@..........e.......?......9............
  ............
  ...........................................
  

  # tcpdump -A -r /tmp/t.txt |grep -i --color pass(在抓包文件中检索密码)
  reading from file /tmp/t.txt, link-type EN10MB (Ethernet)
  .i......331 Please specify the password.
  ...0.i..PASS ftp
  .i.....y227 Entering Passive Mode (192,168,4,101,197,237).
  .i.D....227 Entering Passive Mode (192,168,4,101,106,217).
  

  ————————————————————————————————————————————————————————————————
  ____________________________________________________________________________________________________________________________________________________
  

  网络中用来抓包,协议分析工具是用wireshark,俗称网络鲨鱼,装好后。在应用程序里可以把这个软件打开,是用图形界面显示的,所以装的时候要有图形。抓到包后,这图形上面显示抓到的包,下面显示这个包经过的物理层,数据链路层,网络层和传输层。最下面显示的是点开哪一层,都会详细信息。(公司生产环境中抓包,一般抓的是装防火墙的这台服务器。
  

  

  3.3协议分析工具(wireshark)(网络鲨鱼)
  

  # yum -y install wireshark wireshark-gnome
  # rpm -qa |grep shark
  wireshark-gnome-1.8.10-17.el6.x86_64
  wireshark-1.8.10-17.el6.x86_64
  

  

  

  

  osi(开放系统互联) 物理层(网卡) 数据链路层(交换) 网络层(路由,三层)传输层 (udp视频音频适合   tcp)会话   表示层应用 http ftp smtp
  

  

  

  IP包里都包含哪些信息:目标地址 源地址 目标端口源端口
  

  

  tcp标记位 : 建立连接SYN确认ACK   断开FIN发送数据PUSH   重新连接RST
  

  

  tcp/ip 四层:
  物理层(比特流)网络层(包)传输层(段) 应用层(协议层)
  

  为什么给ip包分段:因为数据包可能比较大,路由过不去只能分段,每个数据包会有tcp标记,。
  

  

  

  ftp(下载20 主动) ftp(访问21 被动)
  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  CA机构(CA服务器)是用来给公司服务器颁发数字证书的。有权威的也有私有自己搭建的。
  

  使用IP地址是X.X.X.88主机做CA服务器
  整体部署思路
  第一步:配置CA签署环境(给客户端发证的默认配置)
  /etc/pki/tls/openssl.cnf
  第二步:为CA服务器生成私钥(创建密钥对)
  第三步:为CA服务器创建根证书 (生成自己的根证书文件)
  第四步:发布根证书文件(把自己的根证书共享给客户端)
  第五步:客户端下载根证书
  

  1
  # rpm -qf   /etc/pki/tls/openssl.cnf
  openssl-1.0.1e-42.el6.x86_64
  #
  

  vim   /etc/pki/tls/openssl.cnf
  40 [ CA_default ]
  42 dir             = /etc/pki/CA
  43 certs         = $dir/certs
  45 database      = $dir/index.txt
  50 certificate   = $dir/my-ca.crt
  55 private_key   = $dir/private/my-ca.key
  

  84 [ policy_match ]
  85 countryName             = match
  86 stateOrProvinceName   = match
  87 organizationName      = match
  88 organizationalUnitName= optional
  89 commonName            = supplied
  90 emailAddress            = optional
  

  128 [ req_distinguished_name ]
  130 countryName_default             = CN
  135 stateOrProvinceName_default   = beijing
  138 localityName_default    = beijing
  141 0.organizationName_default      = tarena
  148 organizationalUnitName_default= ope
  :wq
  

  

  

  touch/etc/pki/CA/index.txt
  echo01>/etc/pki/CA/serial
  

  2
  cd/etc/pki/CA/private/
  ]# opensslgenrsa-des32048>my-ca.key
  chmod600my-ca.key
  

  

  3
  cd   /etc/pki/CA/private/
  openssl req   -new-x509-keymy-ca.key-days 365>
  

  ../my-ca.crt
  

  

  # openssl req   -new-x509-key
  

  my-ca.key-days 365 > ../my-ca.crt
  Enter pass phrase for my-ca.key:
  You are about to be asked to enter information that will
  

  be incorporated
  into your certificate request.
  What you are about to enter is what is called a
  

  Distinguished Name or a DN.
  There are quite a few fields but you can leave some
  

  blank
  For some fields there will be a default value,
  If you enter '.', the field will be left blank.
  -----
  Country Name (2 letter code) :
  State or Province Name (full name) :
  Locality Name (eg, city) :
  Organization Name (eg, company) :
  Organizational Unit Name (eg, section) :
  Common Name (eg, your name or your server's
  

  hostname) []:ca.tedu.cn
  Email Address []:plj@tedu.cn
  #
  

  # ls /etc/pki/CA/my-ca.crt
  /etc/pki/CA/my-ca.crt
  #
  

  4
  rpm-qhttpd||yum-yinstallhttpd
  mkdir/var/www/html/certs/
  cp/etc/pki/CA/my-ca.crt   /var/www/html/certs/
  service   httpd   start
页: [1]
查看完整版本: linux 安全应用 2