Linux在网络中通信首先要保证数据的安全保密,所以我们就要了解一下数据的加密解密的过程

OSI国际标准化组织制定了为x.800 的安全框架:包含一下方面

              安全***:任何危机信息安全的都叫安全***
                                    被动***:窃听 
                                    主动***:伪装、重播、消息修改、拒绝服务 
              安全机制: 组织***,或从***状态恢复到正常状态
                                    加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制、公证 
              安全服务: 

      认证 
      访问控制 
      数据保密性 
      连接保密性 
      无连接保密性 
      选择域保密性 
      流量保密性 
      数据完整性 
      不可否认性 

而我们主要数一下安全机制里的加密以及对应的解密机制:

    加密算法和协议分为: 
   (1)
对称加密:密钥长度(128,192,256,384,512)

                           特性: 

                           1、加密、解密使用同一口令; 
                           2、将明文分隔成固定大小的块,逐个进行加密 

                           3、加密速度快
                           缺陷: 
                           1、密钥过多; 
                           2、密钥传输安全不能保证;

                           3、容易被破解 

   (2)公钥加密: 

                            非对称加密,每个密钥都是成对出现,分为公钥和私钥。私钥自己持有,公钥任何人都可获得。所以只需要维护一对密钥即可。

                            公钥:public key

                            私钥:secret key

                            公钥长度为:1024、2048、4096,

                            加密速度太慢所以不会用来加密数据,一般用于密钥交换、身份验正。 

   (3)单向加密: 

                            为了保证数据完整性,使用单项加密

                            通过数据得到定长的数据指纹

                            具有雪崩效应

                            加密方式:MD5(128位)、SHA1(160位)、SHA256、SHA384、SHA512 
所以完整的加密过程是: 
linux之数据加密与私有CA建立_第1张图片  


那么下来我们就要保证公钥的获得正确和安全

    密钥的交换:IKE(Internet Key Exchange) 

    使用DH算法 

    而公钥的安全是有第三方机构来保证。这个机构为CA

CA:  

  CA就是身份的验证,是一个证书,里面包含持有者的公钥有效期等一些基本的注释信息,对于这个证书我们也要证明他的来源和完整性,所以证书也是经过组合加密的,我们需要证书就是为了证明对方的身份,第三方的***明的CA由他自己颁发,也就是自签署证书,所以我们在看对方的证书的时候,先看证书的颁发者是否是可信任的。


PKI:Public Key Infrastructure 公钥基础建设
      签证机构:CA 
      注册机构:RA 
      证书吊销列表:CRL 


x.509: 定义了证书结构和认证协议标准; 
      IP安全、TLS/SSL和S/MIME 

CA证书的格式:

linux之数据加密与私有CA建立_第2张图片

拿到别人发来CA的签证,用CA 的公钥解密,能解密则说明签证是CA发的,把解密出来的特征码和自己重新计算的特征码作比较,一样说明CA是完整的。

但是CA机构的认证时收费的,有时候一个公司的内部需要内部认证,那就需要创建一个私有CA

OpenSSL建立私有CA:


CA:

    1,给自己生成一对密钥

    2,自签署证书

    3,验证请求者的信息(私人CA可以省略)

    4,签署证书

通信节点:

    1,生成密钥对

    2,生成证书签署

    3,把请求发送给CA    


建立CA服务器

    1,生成密钥:(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)      wKioL1Pd0irSI_-wAAC_0J_1rlM296.jpg

    2,req:生成证书签署请求.   openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655

        -x509:生成自签署证书

        -days n:证书有效时长

        -key /path/to/keyfile:指定私钥文件 名字为cakey.pem

        -new:新的请求

        -out /path/to/somefile:证书保存位置,名字为cacert.pem        linux之数据加密与私有CA建立_第3张图片

    3,初始化工作环境

        #touch /etc/pki/CA/{index.txt,serial}

        #echo 01 > /etc/pki/CA/serial   CA的编号从01开始       wKiom1Pd0RGxCoAbAABjX7k9WE8186.jpg

 节点申请证书:

     一:节点生成请求

         生成密钥对

        (umask 077;openssl genrsa -out /root/httpd.key 2048)

wKioL1Pd0iuwHUiIAACJJaQK_BI349.jpg

         生成证书签署请求

         #openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr

linux之数据加密与私有CA建立_第4张图片

         把签署的请求文件发给CA服务

         # scp  /path/to/file  host:/path/to/  linux之数据加密与私有CA建立_第5张图片

    二:CA签署证书

        1,验证证书中的信息

        2,签署证书

        # openssl ca -in /path/to/somefile.csr -out /path/to/somefile.crt -days Nlinux之数据加密与私有CA建立_第6张图片

linux之数据加密与私有CA建立_第7张图片

        证书签署成功,保存在-out目录下。/etc/pki/CA/httpd.crt

        3,发送给请求者

 

三:吊销证书

    (1)节点

            获取证书serial

               # openssl x509 -in /path/to/certificate_file.crt -noout -serial -subjectwKiom1Pd0RTyulIQAABWt7V2nTI205.jpg

    (2)CA

            根据节点提交的serial和subject信息来验证与index.txt文件中的信息是都一致;

            在/etc/pki/CA/index.txt是否保持一致   wKioL1Pd0i3wfV8-AAB-1TLG_VU977.jpg

            吊销证书

            # openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem      wKioL1Pd0i3BjZecAAB6iB1_Sic228.jpg

            生成吊销证书列表的编号(第一次吊销)

            echo 00 > /etc/pki/CA/crlnumberwKiom1Pd0RSSQB1mAAB2rF_hrKI428.jpg

            更新证书吊销列表

            cd /etc/pki/CA/crl/

            openssl ca -gencrl -out thisca.crl

            如果需要,查看crl文件内容:

            openssl crl -in /path/to/crlfile.crl -noout -text   


  OpenSSL的私有CA就全部完成了。