首页 > 代码库 > openssl的加密、解密以及构建私有CA

openssl的加密、解密以及构建私有CA

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头。

wKiom1SH_MLzYTPYAAB4pLrb6c8621.jpg

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


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


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

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

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

wKioL1SH__vzK4_4AAElgL5-49E272.jpg

解密rc.sysinit.code文件

wKiom1SH_7rggwRuAAEQHHy1k7Q133.jpg


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

以dgst工具,md5算法为例

wKiom1SIAKjBNpdsAACnmAquk3o103.jpg

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

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

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

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


公钥加密

使用openssl生成密钥对

1、  首先生成私钥

wKioL1SIANTjuM7GAADGA9eE6fA015.jpg

2、从私钥中提取公钥

wKiom1SIAFOhJy94AAE8vFKlPIg150.jpg

OpenSSL构建私有CA

一、建立私有CA

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

wKioL1SIBTeQMW-CAAArjC9e2D4306.jpg

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

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

1、生成私钥:

  步骤一:

wKioL1SIBXCRNRZ5AAAewo0s_ns946.jpg

  步骤二:

wKioL1SIBX6SajtPAAEZzfJGjHE972.jpg

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

  步骤三:检测生成的私钥

wKioL1SIBZaBGeLnAAB4v-kwV_s206.jpg

2、生成自签署证书:

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

  步骤一:

wKiom1SIBXDB832kAAK1L5UAArQ188.jpg

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

wKioL1SIBlnAqV2xAAJVCKqlgQ8072.jpg

  步骤二:

wKiom1SIBerC18ZoAAC_3gojRno032.jpg

步骤三:

wKioL1SIBqawxc_RAAArpHb0I8k690.jpg

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


二、给节点发放证书:

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

1、节点申请证书

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

   生成私钥:

wKioL1SICm7ivqjNAAFNDPw-l1g018.jpg


wKiom1SICfDhwNJmAACLduCXZv0901.jpg

  生成证书签署请求:

wKioL1SICpviHCSJAAKeetVwx14233.jpg

  把请求发送给ca:

wKioL1SICrmDjIZbAAA5_W2Wwl8866.jpg

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

wKioL1SICvahjllSAAFv06Ev29A898.jpg

2.CA签署证书:

  验证请求者的信息:

  签署证书:

wKioL1SICyuhLF_DAAMCm1csELw777.jpg

 检测:

wKioL1SIC02QUi6aAAEO-hUAY0s889.jpg

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

wKiom1SICsPTc8r0AACL0b0y-pw878.jpg

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

wKioL1SIC4TAtoBNAABHvUDjfO4750.jpg

   查看内容如下部分:

wKiom1SICvmDIg56AABYNxpaq5s066.jpg


三、吊销证书

在客户端执行:

(一)获取证书的serial

wKiom1SIDQiCVx9oAABTVdqfO-s866.jpg


查看部分内容如下:

wKiom1SIDO7Sxjz1AABeaivdtjs330.jpg


在CA端执行:

(二)CA

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

wKiom1SIDMuyKXAmAAFB9LPhzI8885.jpg


2、吊销证书

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

wKioL1SIDUPB0z-9AAF4GLwfTLI849.jpg

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

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


3、更新证书吊销列表

wKioL1SIDSKQPHyhAAB7LvZKYL0343.jpg


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

wKioL1SIDQHSGK2dAAGvji8u8IY037.jpg


验证证书:

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

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

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


本文出自 “小二哥Linux” 博客,请务必保留此出处http://9612520.blog.51cto.com/9602520/1588400

openssl的加密、解密以及构建私有CA