首页 > 代码库 > linux之数据加密与私有CA建立

linux之数据加密与私有CA建立

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 
所以完整的加密过程是: 

                             A276958889E348E7821E10036C8D5714


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

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

    使用DH算法 

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

CA:  

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


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


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

CA证书的格式:

313E58D523514285AEE8E10E40FFAC08

拿到别人发来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)      74786F07F98A4DA2BA5AE47CA743ADF9

    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        E8CD2F9B9FBC4BB68A0281CF1C0B172A

    3,初始化工作环境

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

        #echo 01 > /etc/pki/CA/serial   CA的编号从01开始       E637D3A196064863875FF6610F57474D

 节点申请证书:

     一:节点生成请求

         生成密钥对

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

290F349DDC7B46028FCAA562B425FC25

         生成证书签署请求

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

3DC2CF5A4BCD45A494B8E7B78A8B51BC

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

         # scp  /path/to/file  host:/path/to/  4ED347178CB84E48B1D8CD16E443FC4C

    二:CA签署证书

        1,验证证书中的信息

        2,签署证书

        # openssl ca -in /path/to/somefile.csr -out /path/to/somefile.crt -days NC4BC07F4F5F14F758CD6AB1CD06EF784

1DA1790BBD9747D9BEE650DCBBF4DFF2

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

        3,发送给请求者

 

三:吊销证书

    (1)节点

            获取证书serial

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

    (2)CA

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

            在/etc/pki/CA/index.txt是否保持一致   6DE95A4960964D2BAD1EC445484E08A4

            吊销证书

            # openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem      5ABDAF2CD8214F29B27D42DFF73E0198

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

            echo 00 > /etc/pki/CA/crlnumber0C628C6E0DC74DBE9F3B846D061C2DBE

            更新证书吊销列表

            cd /etc/pki/CA/crl/

            openssl ca -gencrl -out thisca.crl

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

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


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


本文出自 “aolens·程超” 博客,请务必保留此出处http://aolens.blog.51cto.com/7021142/1534239