nginx增加了SSL證書,reload時報錯
私鑰與證書不匹配
nginx: [emerg] SSL_CTX_use_PrivateKey_file("/usr/local/nginx/ssl/ssl.key") failed
(SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
原因和解決方案
一般來講,我們拿到的官方證書,不是最終的證書,而是一個中間證書intermediate.crt和一個根證書,需要我們把兩個證書合成一個最終的證書。
- 證書順序錯誤
調整證書順序,一般是:服務器證書+CV證書的第二段 - 證書內容合並時末尾有空格
刪除空格
為了避免空格出現,可以通過cat root.crt intermediate.crt > ca_****.crt
來生成證書。
調整之后,使用openssl檢查證書的私鑰和證書是否匹配。方式如下:
檢查證書的私鑰和證書是否匹配
[root@--]# openssl x509 -noout -modulus -in ssl.crt | openssl md5
(stdin)= 8216eeaa8e1a346dd1f5dfecaadfec1d
[root@--]# openssl rsa -noout -modulus -in ssl.key | openssl md5
(stdin)= 8216eeaa8e1a346dd1f5dfecaadfec1d
兩個一致,則nginx可以重啟成功。
PS.證書路徑
nginx SSL證書路徑不支持'.'符號,如果路徑中有'.'符號,則https不生效,網站依然顯示不安全
錯誤例子: /etc/nginx/ssl/ssl.co.vn/t.key