本文主要參考了:
https://ask.dcloud.net.cn/article/39567
https://blog.csdn.net/weixin_34387468/article/details/91855502
我主要使用openssl工具來生成的https證書,但是網上大多數是用keytool。其實最重要的是設置正確的SAN信息。(這里介紹了SAN設置)。
生成正確SAN信息的證書,首先要生成3對證書,一個是根證書,用來簽發子證書。一個server證書,用來放服務器端。一個client證書,用來放到客戶端。
然后將server和client的證書,使用根證書簽發。
# CA根證書 openssl req -new -nodes -keyout ca.key -out ca.csr -days 3650 -config ./openssl.cnf # server證書 openssl req -new -nodes -keyout server.key -out server.csr -days 3650 -config ./openssl2.cnf # client證書 openssl req -new -nodes -keyout client.key -out client.csr -days 3650 -config ./openssl2.cnf # 查看證書 是否帶san Subject Alternative Name字段是否有值 # csr格式 openssl req -text -noout -in server.csr # crt格式 openssl x509 -text -noout -in client.crt # 簽名 帶SAN簽名 openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -extfile ./openssl2.cnf -extensions v3_req openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365 -extfile ./openssl2.cnf -extensions v3_req
另外附上證書各種格式轉換命令
# 轉P12 (uniapp需要) openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 -name "client" # crt轉pem openssl x509 -in client.crt -out client.pem -outform PE # crt轉cer openssl x509 -in server.crt -out server.cer -outform der openssl x509 -in client.crt -out client.cer -outform der # 轉der (ios需要) openssl x509 -in client.crt -outform der -out client.der # curl 測試證書命令: curl --cacert ca.crt --cert client.crt --key client.key --tlsv1.2 --insecure https://gateway.xxx.cn/api/_sys/health
看別人踩坑,鋪平自己的路,歡迎關注猿界汪汪隊;