一: 加密,与解密:

                这里指的加密和解密是对网络中数据报文传输来讲的,在现在日益复杂的网络环境中,对数据传输做安全考虑是很有必要性的。本文将介绍四种加密的实现方法。

二:加密的分类:对称加密、公钥加密、单向加密、数字签名。

            1.对称加密:通信双方使用同一个密钥,这个密钥可以加密和解密,也成单钥加密。    这种加密方式加密传输速度比较快,但是密钥的交换比较难。因为一旦密钥丢失则毫无安全性可言因此它还称为私钥加密。

            2.公钥加密:通信双方都持有一对密钥(公钥和私钥)比如AB双方通信,

A用对方的公钥钥加密发送给B只需要用自己的私钥对其解密即可。  这种加密方式就解决了密钥分发困难,因为这种密钥是成对的,只需要公开自己的公钥,保管好自己的私钥即可。

            3.单向加密:单向加密是基于某种算法和工具对数据进行加密,并提取特征码附加语元数据后边。单向加密是不可逆的具有雪崩效应,因此它能够实现检测数据的完整性。它并不依赖于密钥

            4.数字签名:数字签名是结合上述 三种方法结合起来使用的。

        注意:以上四种方法存在一个问题,那就是密钥的交换比较困难,比如AB通信,A怎么确保给自己的一定是B的密钥呢?此时就引入了CA

三:CA服务器: CAPKI系统中通信双方都信任的实体,被称为可信第三方(Trusted ThirdParty,简称TTP)。

   CA签发证书格式:

   加密,解密详解及openssl自建CA服务器_解密

但是存在一个问题,就是任何人都可以产生一对公私密钥对,并声称自己就是LOIS CA,然后签发一张自签名证书、并通过网络随意传播。这显然就不行,那么就需要有一个CACA自签发证书格式如下:

       

           加密,解密详解及openssl自建CA服务器_解密_02

但是这样第一个CA怎么来的呢?这个CA是由可信途径获得。

.结合CA详解AB通信中数据包的加密过程:首先看下图:

     加密,解密详解及openssl自建CA服务器_解密_03

 

从图中我们不难看出:首先AB都需要从CA那里注册,CAAB签发证书,这样解决了我们上边提到的顾虑,现在要实现数字签名,则B需要对数据报进行单向加密提取特征码1 并放于数据报尾部,再次利用对称加密(即用自己的密钥对数据报和特征码都进行加密得到特征码2),最后B再将其作为整体 对其进行公钥加密发送给A

A在得到数据报的时候先用自己的私钥解密,再用B给的密钥进行解密,最后对数据进行再一次单向加密的方法得出特征码3,比较特征码与特征码1来确保数据的完整性。


.CA服务器的应用:我们借助工具OpenSSL来完成CA服务器的搭建,关于OpenSSL SSL我们本篇不做介绍,大家可以从网上查看其相关讲解。

   1.建立CA服务器:

     1.1生成密钥:# (umask 077; openssl genrsa-out /etc/pki/CA/private/cakey.pem 2048)

     其中-out:生成密钥保存的文件位置

    1.2自签证书:# opensslreq -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem-days 3655

     1.3初始化工作环境:

              # touch/etc/pki/CA/{index.txt,serial}//创建保存注册信息的索引,与序号

                       # echo 01 > /etc/pki/CA/serial      //为其自己创建第一个证书序号为01开始

    注意:初始化操作只是在第一次创建CA服务器的时候才进行的步骤。

   2.节点申请证书:我们以http 服务器申请证书为例

     1.节点生成请求:

     1.1节点生成密钥对儿:#(umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048) 

     1.2 生成签署证书请求:#openssl req -new -key /etc/httpd/ssl/httpd.key -out  /etc/httpd/ssl/httpd.csr

     1.3把生成的签署证书请求发送到CA服务器;这里用到scp命令。我们这里用本机做测试 所以就不用复制了,直接签发证书即可。

 3.CA证书签署

    1.验证证书请求信息;

    2.签署证书

    3.将证书发给http服务器

 4.吊销证书:我们仍以http 服务器测试

   1.节点首先查看自己的证书编号:

[root@guzenghui httpd]# openssl x509 -in/etc/httpd   /ssl/httpd.crt -noout -serial  -subject

serial=01

subject=/C=CN/ST=henan/O=ops/CN=guzenghui        

    2.CA根据节点提交的serialsubject信息来验正与index.txt文件中的信息是否一致;

      如果一直将其吊销

   3.吊销证书# opensslca -revoke /etc/pki/CA/newcerts/SERIAL.pem

           这里的SERIAL指的是你查出自己的证书所对应的编号如:

       [root@guzenghui ssl]# cd/etc/pki/CA/newcerts/

       [root@guzenghui newcerts]# ls

       01.pem

    4.生成吊销列表编号(如果是第一次吊销):

       [root@guzenghui CA]# echo 00 >/etc/pki/CA/crlnumber  

    5.更新证书吊销列表   

       [root@guzenghui crl]# openssl ca -gencrl -out/etc/pki/CA/crl/thisca.crl

       Using configuration from/etc/pki/tls/openssl.cnf

至此,我们对CA 的应用已经讲解基本清楚,关于openssl 下许多子命令需要的话可以查阅相关资料。