加密incode:对明文(可读懂的信息)进行翻译,使用不同的算法对明文以代码形式(密码)实施加密。该过程的逆过程称为 解密(descode),即将该编码信息转化为明文的过程

常见的加密算法和协议:

1、对称加密

2、公钥加密(非对称加密)

3、单向加密

4、认证协议

对称加密:加密和解密使用同一个密钥,依赖于,算法和密钥,其安全性依赖于密钥而非算法
常见算法:DES、3DES、 AES、Blowfish、IDEA、Twofish、CAST5、Rc6
 特性:1)加密解密使用同一密钥
             2)将明文分隔成固定大小的块,逐个进行加密
 缺陷:1)密钥过多
          2)密钥分发
非对称加密:即公钥加密,

密钥对儿:私钥(仅允许个人使用)和公钥(公开给所有人获取)
公钥从私钥中提取而来(使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密,反之亦然)

用处:

        1)身份认证:私钥拥有者用自己私钥加密的数据,只要用其公钥能解密,即可认证其身份
        2)密钥交换:任何一个人计划与被通讯方通信之前,首先获取到对方的公钥,自己生成一个加密密码,用对方的公钥加密,并发给对方
        3)数据加密
算法:RSA、DSA 实现数字签名、ELGamal
特性:1)密钥长度较大,512bit,2048bits,4096bits
         2)加密解密分别使用密钥对儿中的密钥对进行
         3)常用于数据签名和密钥交换
单向加密:数据能加密但不能解密,用于提取数据的特征码

特性:

         1)定长输出:无论原来的数据是多大级别,其加密结果长度一样
         2)雪崩效应: 原始数据微小改变,将会导致结果巨大变化;
         3)不可逆:
算法:MD5:128bits定长输出、SHA1:160bit定长输出、SHA256、 SHA384、SHA512、CRC32循环冗余校验

下面说说OpenSSL如何搭建CA

Openssl是SSL的开源实现(可以免费下载应用程序),是一种安全机密程序,主要用于提高远程登录访问的安全性。也是目前加密算法所使用的工具之一,功能很强大。

       Openssl为网络通信提供安全及数据完整性的一种安全协议,包括了主要的密码算法、常用的密钥和证书封装管理功能(CA)以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用,例如我们将会使用Openssl实现私有CA,并实现证书颁发。

openssl的组成部分:
           libscrypto:加密、解密库文件
           libssl:ssl协议实现
           openssl:多用途命令行工具,每种功能都使用专用的子命令来实现

SSL:(Secure Socket Layer)安全套接字层,通过一种机制在互联网上提供密钥传输。其主要目标是保证两个应用间通信数据的保密性和可靠性,可在服务器端和用户端同时支持的一种加密算法。目前主流版本SSLV2、SSLV3(常用)。

 

使用OpenSSL构建私有CA:
        1、生成私钥:
        2、生成自签署证书:

        (1)私钥用于签发证书时,向证书添加数字签名使用;
        (2)证书:每个通信方导入此证书至"受信任的证书颁发机构"

配置文件:/etc/pki/tls/openssl.cnf

工作目录:/etc/pki/CA/

wKiom1U3bWDDM586AAO6KevRRLM418.jpg

 

建立私有CA思路:
                 1、生成私钥文件   /etc/pki/CA/private/cakey.pem(存放)
                 #  cd /etc/pki/CA
                 #  (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
                 2、生成自签证书
                 # openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days #

                   -new:生成新的证书签署请求
                   -key:私钥文件路径,用于提取公钥
                   -days -N:证书有效时长,单位为"天"
                   -out:输出文件保存位置
                   -x509:直接输出自签署的证书文件,通常只有构建CA时才这么用,如果没有x509则为签署请求
                 3、提供辅助文件
给节点发证书:

              1、节点申请证书:在证书申请的主机进行如下步骤
                       (1)生成私钥
                       (2)生成证书签署请求
                       注意:其中的subject信息部分,要与CA的保持一致
                                Common Name要使用此主机在通信真实使用名字
                      (3)把请求发送给CA;让CA以便发出请求
              2、CA签发证书
                        (1)验证请求者信息
                        (2)签署证书
                        # openssl ca -in /PATH/FROM/CSR_FILE -out /PATH/TO/CRT_FILE -days N
                        (3)把签署好的证书发还给请求者

下面以http为例具体实现CA的搭建:

      # cd /etc/httpd/
      # ls

      # touch index.txt
      # echo 01 > serial

      # mkdir ssl
      # cd ssl
      # (umask 077;openssl genrsa -out httpd.key 1024) 生成密钥
      # ll

wKioL1U3cOfQLt_JAADUe5bBaDU836.jpg      # openssl req -new -key httpd.key -out httpd.csr 证书签署请求
      -->输入相关信息
      -->两次回车使用空密码
      # ll

wKioL1U3cQLiLitQAAMxveitxVc929.jpg      # openssl ca -in /etc/httpd/ssl/httpd.csr -out /etc/httpd/ssl/http.crt -days 3650  签署证书 直接签署证书

wKiom1U3cCLgzn7UAAMpDhuZdZo863.jpg    

wKiom1U3cIOQCKdvAAEH9RXZfxs108.jpg

出现红色标识部分,说明 签署成功

 

吊销证书:
    1、获取吊销证书的序列号

      # openssl x509 -in /PATH/FROM/CRT_FILE  -serial -subject
      # openssl x509 -in /etc/httpd/ssl/http.crt  -serial -subject

wKiom1U3cYDyQYsxAAaCsuSheX0570.jpg    2、实现证书吊销:根据证书持有者
      确保一致
      (1)吊销证书
      # openssl ca -revoke /PATH/FROMCRT_FILE
      (2)生成吊销证书的编号
      echo 01 > /etc/pki/CA/crlnumber
      (3)更新证书吊销列表
      # openssl crl -gencrl -out THISCA.crl