【解決方案】SSL證書報錯:X509_check_private_key:key values mismatch


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和一個根證書,需要我們把兩個證書合成一個最終的證書。

  1. 證書順序錯誤
    調整證書順序,一般是:服務器證書+CV證書的第二段
  2. 證書內容合並時末尾有空格
    刪除空格
    為了避免空格出現,可以通過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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM