正規的證書需要向CA機構申請,一般流程為:先生成一個私鑰,然后用私鑰生成證書請求(證書請求里應含有公鑰信息),再利用證書服務器的CA根證書來簽發證書。但是向CA申請證書通常不免費,我們可以通過openssl自簽名的形式生成ssl證書,實現https訪問效果,.crt結尾的是證書文件,.key結尾的是密鑰文件,.csr結尾的是證書請求文件。
1.創建簽發CA根證書的配置文件ext.ini
basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = www.test.com DNS.2 = *.test.com IP.1 = 127.0.0.1 IP.2 = 192.168.127.33
注:alt_names中既可以填域名,也可以填ip地址,根據實際情況,按照上述樣式繼續添加
2.創建CA證書及密鑰
openssl req -x509 -newkey rsa:2048 -out MyCA.crt -outform PEM -keyout MyCA.key -days 3650 -verbose -nodes -sha256
注:運行上述命令后,需要根據提示輸入信息,隨意填寫,但是要記住填的內容
3.創建ssl證書密鑰及請求文件
openssl req -newkey rsa:2048 -keyout MyServer.key -out MyServer.csr -sha256 -nodes
注:根據提示填寫
4.簽發ssl證書:
openssl x509 -req -CA MyCA.crt -CAkey MyCA.key -in MyServer.csr -out MyServer.crt -days 3650 -extfile ext.ini -sha256 -set_serial 0x1111
5.向瀏覽器中手動導入CA證書
通常瀏覽器中內置了CA根證書,但是我們的CA證書是利用openssl自己制作的的,所以需要手動導入。以Chrome瀏覽器為例,我們先點擊右上角三個·,然后依次點擊‘設置’,‘隱私設置和安全性’,‘安全’,‘管理證書’,‘受信任的根證書頒發機構’,‘導入’,然后將MyCA.crt導入即可,接下來就可以通過瀏覽器以https方式訪問我們的網站了。