一、證書申請流程
HTTPS使用簽名證書流程如下:
1、服務器生成一對公鑰和私鑰(不對稱加密方式,此處的公鑰簡稱<服公鑰>,密鑰簡稱<服密鑰>)
2、服務器向CA機構進行通信,將<服公鑰>交給CA機構
3、CA對<服公鑰>進行數字簽名,生成一個<數字簽名>,將兩者綁定在一起<公鑰證書>
4、<公鑰證書>返回並且存在服務器,在paas平臺的Nginx上導入簽名的證書
二、簽名過程
1、創建私鑰
使用openssl工具生成一個RSA私鑰
# openssl genrsa -des3 -out server.key 2048
注意:生成私鑰,需要提供一個至少4位,最多1023位的密碼。
2、生成CSR(證書籤名請求CSR文件)
# openssl req -new -key server.key -out server.csr
說明:需要依次輸入國家,地區,城市,組織,組織單位,Common Name和Email。其中Common Name,可以寫自己的名字或者域名,如果要支持https,Common Name應該與域名保持一致(對應要簽名的域名),否則會引起瀏覽器警告。
3、刪除密鑰中的密碼
# openssl rsa -in server.key -out server.key
說明:如果不刪除密碼,在應用加載的時候會出現輸入密碼進行驗證的情況,不方便自動化部署。
-------------------------------------------------------------------------------------------------------------------------------------
CA機構簽名
可以將上面的證書發server.csr送給證書頒發機構(CA),CA驗證過請求者的身份之後,會出具簽名證書,需要花錢。另外,如果只是內部或者測試需求,也可以使用OpenSSL實現自簽名。
------------------------------------------------------------------------------------------------------------------------------------------
自簽名方法
4、生成自簽名證書
內部或者測試使用,只要忽略證書提醒就可以了。
# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
5、生成pem格式的公鑰
有些服務,需要有pem格式的證書才能正常加載,可以用下面的命令:
# openssl x509 -in server.crt -out server.pem -outform PEM
6、CER格式轉CRT格式
# openssl x509 -inform DER -in server.cer -out server.crt |
三、多域名SSL證書請求
一般默認是針對一個域名進行簽名,也可以在一個證書裏設置多個域名,來實現多個域名使用一個證書的目的。
經過多次實驗,只發現下面一個命令能夠實現:
# openssl req -new -sha256 -key server.key -subj "/" -reqexts SAN -config <(cat /etc/pki/tls/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:yoursite1.com,DNS:www.yoursite2.com")) > server.csr
使用下面的命令來查看csr文件裏的包含信息:
# openssl req -text -noout -in server.csr
如果顯示下面標紅的文字,說明設置成功:
Certificate Request:
Data:
Version: 0 (0x0)
Subject:
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus: ..........
Exponent: 65537 (0x10001)
Attributes:
Requested Extensions:
X509v3 Subject Alternative Name:
DNS:yoursite1.com, DNS:www.yoursite3.com
Signature Algorithm: sha256WithRSAEncryption
........