加密解密技術基礎,PKI以及創建私有CA

加密解密技術基礎,PKI以及創建私有CA

  • 加密算法和協議:
    1.對稱加密:加密和解密使用同一個密鑰

    DES:Data Encryption Standard; 
      3DES:Triple DES;
      AES:Advanced Encryption Standard;  (128bits, 192bits, 256bits, 384bits)
        Blowfish
        Twofish
        IDEA
        RC6
        CAST5
        特性:
        (1)加密、解密使用同一個密鑰;
        (2)將原始數據分割成爲固定大小的塊,逐個進行加密;
        缺陷:
        (1)密鑰過多;
        (2)密鑰分發困難;

    2.公鑰加密:密鑰分爲公鑰與私鑰

    公鑰:從私鑰中提取產生;可公開給所有人;pubkey
    私鑰:通過工具創建,使用者自己留存,必須保證其私密性;secret key;
    特點:用公鑰加密的數據,只能使用與之配對兒的私鑰解密;反之亦然;
    用途:
        數字簽名:主要在於讓接收方確認發送方的身份;
       密鑰交換:發送方用對方公鑰加密一個對稱密鑰,併發送給對方;
       數據加密
    算法:RSA, DSA, ELGamal
              DSS: Digital Signature Standard
            DSA:Digital Signature Algorithm

    3.單向加密:即提出數據指紋;只能加密,不能解密;

    特性:定長輸出、雪崩效應;
       功能:完整性;
       算法:
             md5:Message Digest 5, 128bits
             sha1:Secure Hash Algorithm 1, 160bits
           sha224, sha256, sha384, sha512

    4.密鑰交換: IKE(Internet Key Exchange)

    公鑰加密
        DH(Deffie-Hellman)
               例如:   A:p, g
                         B:p, g
                         A: x--> p^x%g ==> B
                             A: (p^y%g)^x=p^yx%g
                             B: y--> p^y%g ==> A
                             B: (p^x%g)^y=p^xy%g

    5.一次加密通信過程:
    加密解密技術基礎,PKI以及創建私有CA
    A: (1):128bit的特徵碼單向加密成數字摘要
    (2):將數字摘要和原文前面加上A的私鑰
    (3):將A的私鑰和特徵碼用對稱加密
    (4)對稱加密前面加上B的公鑰
    B:(1):B用自己的私鑰解密獲得對稱空間
    (2):用對稱密鑰解密加密內容
    (3):用A的公鑰單向加密生成特徵碼
    (4):用此特徵碼和原來的比較是否一樣

  • PKI以及SSL會話
    1. PKI:公鑰基礎設施
      簽證機構:CA
      註冊機構:RA
      證書吊銷列表:CRL
      證書存取庫
      X.509:定義了證書的結構以及認證協議標準
      版本號;序列號;簽名算法ID;發行者名稱;有效期限;主體名稱;主體公鑰;發行者的惟一標識;主體的惟一標識;擴展;發行者的簽名
      2.SSL會話主要三步:
      客戶端向服務器端索要並驗正證書;
      雙方協商生成“會話密鑰”;
      雙方採用“會話密鑰”進行加密通信;
      加密解密技術基礎,PKI以及創建私有CA
      SSL Handshake Protocol:
      第一階段:ClientHello:
      支持的協議版本,比如tls 1.2;
      客戶端生成一個隨機數,稍後用戶生成“會話密鑰”
      支持的加密算法,比如AES、3DES、RSA;
      支持的壓縮算法;
      第二階段:ServerHello
      確認使用的加密通信協議版本,比如tls 1.2;
      服務器端生成一個隨機數,稍後用於生成“會話密鑰”
      確認使用的加密方法;
      服務器證書;
      第三階段:
      驗正服務器證書,在確認無誤後取出其公鑰;(發證機構、證書完整性、證書持有者、證書有效期、吊銷列表)
      發送以下信息給服務器端:
      一個隨機數;
      編碼變更通知,表示隨後的信息都將用雙方商定的加密方法和密鑰發送
      客戶端握手結束通知;
      第四階段:
      收到客戶端發來的第三個隨機數pre-master-key後,計算生成本次會話所有到的“會話密鑰”;
      向客戶端發送如下信息:
      編碼變更通知,表示隨後的信息都將用雙方商定的加密方法和密鑰發送;
      服務端握手結束通知;
  • 創建私有CA
    1.構建私有CA:
    在確定配置爲CA的服務上生成一個自簽證書,併爲CA提供所需要的目錄及文件即可
    步驟:
               (1)生成私鑰:
                     (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
                        ():作用域子shell進程
                (2) 生成自簽證書;
                      openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
                       -new:生成新證書籤署請求;
                       -x509:生成自籤格式證書,專用於創建私有CA時;
                       -key:生成請求時用到的私有文件路徑;
                       -out:生成的請求文件路徑;如果自籤操作將直接生成簽署過的證書;
                       -days:證書的有效時長,單位是day;
                (3)爲CA提供所需的目錄及文件;
                       mkdir  -pv  /etc/pki/CA/{certs,crl,newcerts}
                       touch  /etc/pki/CA/{serial,index.txt}
                       echo  01 > /etc/pki/CA/serial

    2.要用到證書進行安全通信的服務器,需要向CA請求籤署證書

    步驟:(以nginx爲例)
            (1) 用到證書的主機生成私鑰;
                    mkdir  /etc/nginx/ssl
                    cd  /etc/nginx/ssl
                    (umask  077; openssl  genrsa -out  /etc/httpd/ssl/httpd.key  2048)
            (2) 生成證書籤署請求
                      openssl req -new -key /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.csr -days 365
            (3) 將請求通過可靠方式發送給CA主機;
                      scp /etc/nginx/ssl/nginx.csr [email protected]:/tmp/
            (4) 在CA主機上籤署證書;
                      openssl ca -in /tmp/nginx.csr  -out /etc/pki/CA/certs/nginx.crt -days 365
            (5)查看證書中的信息:
                     openssl  x509  -in /etc/pki/CA/certs/httpd.crt  -noout  -serial  -subject
                        [root@localhost /]# openssl x509 -in /etc/pki/CA/certs/nginx.crt -noout -        
                        serial -subject
                         serial=01
                         subject=/C=CN/ST=Shanghai/O=cern/OU=devops/CN=devops.com

    3.吊銷證書:
    步驟:

    
    (1) 客戶端獲取要吊銷的證書的serial(在使用證書的主機執行):
                  openssl  x509  -in /etc/pki/CA/certs/nginx.crt  -noout  -serial  -subject
            (2) CA主機吊銷證書:
                  先根據客戶提交的serial和subject信息,對比其與本機數據庫index.txt中存儲的是否一致;
                         吊銷:
                             openssl  ca  -revoke  /etc/pki/CA/newcerts/SERIAL.pem
                             其中的SERIAL要換成證書真正的序列號;
            (3) 生成吊銷證書的吊銷編號(第一次吊銷證書時執行)
               echo  01  > /etc/pki/CA/crlnumber
            (4) 更新證書吊銷列表
               openssl  ca  -gencrl  -out  thisca.crl 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章