SSL、TLS介绍:

  SSL:安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保密。

    TLS:安全传输层协议(Transport Layer Security)用于在两个通信应用程序之间提供保密性和数据完整性。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面,与具体的应用无关,所以,一般把TLS协议归为传输层安全协议。

SSL和TLS的位置:

  SSL介于应用层和TCP层之间。应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C

SSL协议提供的服务主要有:
  1)认证用户和服务器,确保数据发送到正确的客户机和服务器;
  2)加密数据以防止数据中途被窃取;
  3)维护数据的完整性,确保数据在传输过程中不被改变。


Openssl简介: openssl是一个能实现加密和解密和自建CA的开源程序包。主要有三部分组成。

1、  Libcrypto是一个能实现加密、解密的公共库。系统中有很多程序都依赖到这个库。

2、  Libssl为了实现SSL功能,绝大多要实现SSL功能的程序所依赖,https会话层。

3、  openssl是多用途的命令行工具,各功能分别使用子命令实现。



对称加密:使用openssl实现对称加密和解密文件

   ----------------------------------------- 使用enc工具为例

加密/tmp/rc.sysinit文件生成rc.sysinit.code文件:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_02

解密rc.sysinit.code文件生成rc.sysinit.clear文件:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_03


单向加密:使用openssl实现单向加密,提取文件指纹

以dgst工具,md5算法为例:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_04

生成用户密码:# openssl passwd -1 -salt SALT

生成随机数:# opnessl rand -bash64|-hex NUM

注意:NUM表示字节;-hex时,每个字符为4位,因此,两个字符为一个字节

例如:# opnessl passwd -1 -salt `openssl rand -hex 4`


公钥加密

使用openssl生成密钥对

1、  首先生成私钥

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_05

2、从私钥中提取公钥

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_06

OpenSSL构建私有CA

一、建立私有CA

查看openssl安装后生成的所有文件列表:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_07

   openssl的主配置文件:/etc/pki/tls/openssl.conf

    默认的CA工作目录: /etc/pki/CA

1、生成私钥:

  步骤一:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_08

  步骤二:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_09

------------------------------注意:生成的私钥要保存在private中

  步骤三:检测生成的私钥

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_10

2、生成自签署证书:

red子命令:生成PKCS#10格式的证书签署请求

  步骤一:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_11

注:也可以编辑配置文件,方便以后直接使用:# vim /etc/pki/tls/openssl.cnf

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_12

  步骤二:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_13

步骤三:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_14

注意:第一次建立私有CA时,需要手动创建index.txt和serial;追加01到serial中


二、给节点发放证书:

       注:CA主机地址为:172.16.249.29 客户端主机地址为:172.16.7.1

1、节点申请证书

      假设:用httpd服务,因此其位置为/etc/httpd/conf/certs

   生成私钥:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_15


openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_16

  生成证书签署请求:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_17

  把请求发送给ca:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_18

-----------------注:可跨主机复制给CA

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_19

2.CA签署证书:

  验证请求者的信息:

  签署证书:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_20


 检测:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_21

  把签署好的证书发还给请求者:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_22

3、查看证书中的相关信息

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_23

   查看内容如下部分:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_24


三、吊销证书

在客户端执行:

(一)获取证书的serial

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_25


查看部分内容如下:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_26


在CA端执行:

(二)CA

 1、根据证书持有者提交的serial和subject信息来与index.txt数据库文件中的信息是否一致;

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_27


2、吊销证书

  注意:所有新生成的证书文件都在newcerts

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_28

  注意:生成吊销证书的编号(如果是第一次吊销)

      # echo 01 > /etc/pki/CA/crlnumber


3、更新证书吊销列表

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_29


注意:查看crl文件的方法:

openssl的加密、解密以及构建私有CA_openssl; 加密、解密;构建私有C_30


验证证书:

      1、使用CA的公钥的解密证书的数字签名

      2、使用同样的单向加密算法提取证书文件特征码,对比解密的结果

      3、验证主体名称与请求的服务器地址是否相同