創建私有CA, 加密解密基礎, PKI, SSL
發現了一篇圖文並茂的超棒的 加密解密, CA, PKI, SSL 的基礎文章, 鏈接如下:
https://blog.csdn.net/lifetragedy/article/details/52238057
簡要描述一下概念:
PKI: Public Key Infrastructure, 公鑰體系
包含, CA, RA, CRL,證書存取庫
CA: 證書簽發機構
RA: 證書註冊機構
X.509是證書標準規範, 定義了證書的結構以及認證協議標準, 現在使用多為v3版本
SSL: Secure Socket Layer 安全的套接字層
TLS:Transport Layer Security 安全傳輸層協議
分層設計:1.最底層: 基礎算法原語的實現, aes, rsa, md5
2.向上一層: 各種算法的實現
例如: aes-128-cdb-pkcs7
3.再向上一層: 組合算法實現的半成品
4. 用各種組件拼裝而成的各種成品密碼學協議/軟件; 例如 tls, ssh
創建私有CA的簡明操作:
操作環境: VMware 虛擬兩臺 CentOS 7.4, 兩機互通
CA簽發服務器為 192.168.142.128 --> CA server
申請CA簽發的客戶端為 192.168.142.135 --> CA client
證書申請及簽署步驟:
- 生成申請請求
- RA核驗
- CA簽署
- 證書獲得及發放
簡明CA相關文件及目錄:
- openssl默認配置文件: /etc/pki/tls/openssl.cnf --> 有必要的情況下可以修改, 一般不動
#################################################################### [ CA_default ] dir = /etc/pki/CA # Where everything is kept -->證書目錄 certs
- 必要的文件及目錄如下:
- # touch index.txt
-->數據庫的索引文件
- # echo 1 > serial
-->證書的序列號
- openssl默認配置文件: /etc/pki/tls/openssl.cnf --> 有必要的情況下可以修改, 一般不動
創建私有CA步驟:
1. 在完成上面的文件創建後, 給CA自己發一個證明自己是CA的自簽證書
在CA server完成
(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096) #生成2048位的RSA私鑰,輸出文件為 cakey.pem openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out cacert.pem #以上述私鑰為基準生成一個CA自簽證書
自簽證書時, 會要求你輸入: 國家信息, 省份信息, 城市信息, 公司名稱, 公司類型, 主機名, 管理郵箱; 處於測試目的, 我們隨便填一下好了;
2.自簽做完, CA server等於啟動了; 轉移到client虛擬機, 請求發證; 以httpd為例
(umask077; openssl genrsa -out /etc/httpd/ssl/httpd.key 4096) #生成密鑰 openssl req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr #生成證書請求文件, 註意, 此處只是證書請求文件, 未經過CA簽名認證
3. 發送證書申請書到CA server, 由CA server簽名蓋章後發回client
scp /etc/httpd/ssl/httpd.csr root@192.168.142.128:/tmp/ #發送到CA server 的/tmp目錄下
以下為CA server操作
cd /tmp
ll -t
我們看到httpd.csr已經成功傳送到CA server上來了
接下來, 就是對其簽證的操作:
openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365 #生成證書, 並保存到CA server的證書目錄下, 有效期為一年; 註意此處後綴為統一後綴 # #查看證書中的信息: # openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -text -subject
證書已簽名, 發放給client
scp /etc/pki/CA/certs/httpd.crt root@192.168.142.135:/etc/httpd/ssl
證書成功發放
4.吊銷證書
**首次吊銷時需要操作** echo 01 > /etc/pki/CA/crlnumber
在client獲取要吊銷的證書的serial編號 openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
在CA server端對比檢驗 上述信息是否與 /etc/pki/CA/index.txt 文本中信息一致;
CA server操作吊銷證書:
openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
更新證書吊銷列表: openssl ca -gencrl -out THISCA.crl
至此私有CA發放完成, 註意此CA僅在互相任何的情況下才能生效;
CA證書的用法在後續隨筆中會繼續提到, 例如 httpd的https服務, 或者nginx的https服務等;
關於CA簽發過程中的後綴:
- 私鑰 *.key
- 公鑰 *.pem
- 待申請證書 *.csr
- 證書 *.crt -->必須
創建私有CA, 加密解密基礎, PKI, SSL