!!!! 火狐瀏覽器對多CN的通配符識別有問題,只識別第一個,所以建議用備用主機名(DNS)方式,。已測試有效 !!!!
openssl自建CA默認簽署的是單域名證書,因爲單臺服務器上有多個https域名,有的時候希望一個證書能解決所有問題,如果是同一個頂級域名,那麼泛域名(通配符)證書正好適合你
不需要修改openssl.cnf,其他有的擴展最好都註釋掉,不註釋也不影響
只要在輸入域名(CN)的時候,把www.baidu.com 改成 *.baidu.com
!!這裏要注意, a.b.baidu.com 要寫成 *.b.baidu.com
!!另外, 經過測試,泛域名可以和多CN方式同時使用,在多CN填寫域名的時候用*.xxx.com代替。
至於備用主機名方式,大家可以自行測試。
其他的步驟:
openssl.cnf中會要求部分文件及目錄存在:
[root@localhost]#mkdir -p CA/{certs,crl,newcerts,private}
[root@localhost]# touch CA/index.txt
[root@localhost]#echo 00 > CA/serial
1.生成ca.key並自簽署
openssl req -new -x509 -days 3650 -keyout ca.key -out ca.crt -config openssl.cnf
2.生成server.key(名字不重要)
openssl genrsa -out server.key 2048
3.生成證書籤名請求
openssl req -new -key server.key -out server.csr -config openssl.cnf
Common Name 就是在這一步填寫的,*.baidu.com
4.使用自簽署的CA,簽署server.scr
openssl ca -days 180 -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
#輸入第一步設置的密碼,一直按y就可以了
server.crt server.key就是web服務器中使用的文件。
NGINX 雙向認證
如果要做NGINX客戶端證書驗證的話,重複2、3、4,並執行下面命令生成個人證書
5.生成個人證書
openssl pkcs12 -export -inkey xxx.key -in xxx.crt -out xxx.p12
將個人證書導入pc,同時在nginx ssl基礎上增加設置:
ssl_verify_client on;
ssl_client_certificate ca.crt;