瀏覽器報錯的證書鏈的問題,我們一般會有三種證書: RootCA.crt(rCA,被信任的根證書)、IntermediateCA.crt(mCA,某些廠商有多個中間證書)、server.crt(sCA,通過CSR簽下來的證書),某些廠商的rCA和mCA是需要用戶自己下載的。為了讓瀏覽器能夠信任我們的證書,我們需要配置一條完整的證書鏈,證書鏈由sCA和mCA構成就好,rCA是瀏覽器內置,不需要服務器給提供。nginx配置證書鏈的時候,就是指定一個證書文件,這個文件中含有我們整個證書鏈的所有證書就好,證書合並的時候,正確的合並方法是把 mCA 合並到 sCA 中。當有多個 mCA 文件時,mCA 從下級到上級(根證書為最上級)依次合並到 sCA 中。在這個過程中,rCA 被視為多余的文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# Combined Certificates -----BEGIN CERTIFICATE----- ...... sCA ...... ------END CERTIFICATE------ -----BEGIN CERTIFICATE----- ...... mCA (lower) ...... ------END CERTIFICATE------ -----BEGIN CERTIFICATE----- ...... mCA (upper) ...... ------END CERTIFICATE------ |
證書鏈的問題解決后,基本應該就可以正常工作了。
.crt服務器證書文件直接通過記事本打開,.cer中級證書也直接通過記事本打開,然后按照如上規則,將兩個文件合並(服務器證書內容在最上面,中級證書內容在下面),最后直接使用合並后的文件即可,這樣就不會再報中級證書(證書鏈)的問題了。
注:實際上.crt跟.cer證書文件內容一樣,只是擴展名不同而已。
注:服務器證書包含.crt和.key文件