1. 程式人生 > >linux基礎之加密解密、PKI及SSL、創建私有CA

linux基礎之加密解密、PKI及SSL、創建私有CA

crt ast mas pki 數據加密 code spa 生成 port

加密解密基礎

  1. 對稱加密: 加密和解密使用同一個密鑰

    常見的加密算法有:DES、3DES、AES、Blowfish、Twofish、IDEA、RC6、CAST5

    特性:

      1. 加密、解密使用同一個密鑰

      2.將原始數據分隔成固定大小的塊,逐個進行加密

    缺陷:

      1. 密鑰過多

      2. 密鑰分發困難

  2. 公鑰加密: 密鑰是成對出現的

    公鑰:pubkey,公開給所有人

    私鑰:secret key, 自己留存,必須保證其私密性

    常見的加密算法有: RSA、DSA(只能用於數字簽名,不能用於數據加密), ELGamal

      特點: 用公鑰加密的數據,只能使用與之配對的私鑰解密,反之亦然

  3. 單向加密: 只能加密,不能解密,用來提取數據特征碼,驗證數據完整性

    常見加密算法有:MD5、SHA1、SHA224、SHA256、SHA384、SHA512

      特性: 定長輸出,雪崩效應,一個小的改變,加密後的密鑰就大不同

  密鑰交換(IKE): 常見的有公鑰加密、DH(Deffie-Hellman)來實現密鑰交換

PKI: Public Key Infrastructure 公鑰基礎設施

  主要組件:  

     簽證機構:CA
   註冊機構:RA
   證書吊銷列表: CRL
   證書存取庫        

    目前簽發的證書:x.509

     x.509: 定義了證書的結構以及認證協議標準:

            版本號
             序列號
            簽署算法ID
            有效期限
            發行者名稱
            主體名稱
            主體公鑰
            發行者唯一標識
            主體的唯一標識
            擴展
            發行者簽名

SSL:Secure Socket Layer, 安全的套接字層

TLS: Transport Layer Security  

openssl:開源項目

  三個組件:   

  openssl: 多用途的命令行工具
  libcrypto: 公共加密庫
  libssl: 庫,實現了ssl及tls

openssl命令:配置文件: /etc/pki/tls/openssl.conf  

openssl version: 查看程序版本號

  常見的標準命令有enc、ca、req

  對稱加密:

    工具: openssl enc, gpg    

加密: # openssl enc -e -des3 -a -salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/SOMEFILE
解密: # openssl enc -d -dec3 -a -salt -in /PATH/FORM/SOMEFILE -OUT /PATH/TO/SOMEFILE

  單向加密:

    工具:openssl dgst, md5sum,sha1sum,sha224sum,sha256sum...

 加密: openssl dgst -md5 /PATH/TO/SOMEFILE

  生成用戶密碼:passwd

  # openssl passwd -1 -salt SALT

  生成隨機數:rand

  # openssl rand -base64|-hex NUM
      NUM:表示字節數;-hex時,每個字符4位,出現的字符數為NUM*2

  公鑰加密:

    加密: RSA, ELGamal

    工具:gpg, openssl, rsautil

加密私鑰:# (umask 077; openssl genrsa -out private.key 2048)
提取公鑰:# openssl rsa -in private -pubout

創建私有CA

  1. 創建所需要的文件 

# touch index.txt
# echo 01 > serial

  2.CA自簽證書

#(umask 077;openssl genrsa -out  /etc/pki/CA/private.pem 2048
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/casert.pem
    -new: 生成新證書簽署請求
    -x509: 專用於CA生成自簽證書
    -key: 生成請求時用到的私鑰文件
    -days n : 證書的有效期限
    -out /PATH/TO/SOMECERTFILE: 證書的保持路徑

  3. 發證

   a. 用到證書的主機生成證書請求 

# (umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
# openssl -req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr

   b. 把請求文件傳輸給CA

# scp /etc/httpd/ssl/httpd.csr [email protected]192.168.1.103:/tmp/

   c. CA簽署證書,並將證書發還給請求者

# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
  
  查看證書中的信息
    # openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|-subject|=serial

  4. 吊銷證書

    a. 獲取要吊銷的證書的serial 

# openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject

  b. CA

      先根據客戶端提交的serial與subject信息對比檢驗是否與index.txt文件中的信息一致

      吊銷證書:

# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
    c. 生成吊銷證書的編號(第一次吊銷一個證書)    
# ech 01 > /etc/pki/CA/crlnumber

     d. 更新證書吊銷列表 

 # openssl ca -gencrl -out thisca.crl

       查看crl文件

# openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text 

      

linux基礎之加密解密、PKI及SSL、創建私有CA