HTTPS 不適用於兩個中間證書
我正在嘗試使用 XCA 軟體創建自己的證書頒發機構。我已經成功創建了根 CA (
Fisir Technologies CA
) 和中間 CA (Fisir Technologies Intermediate CA X1
)。但是,我想在第一個中間 CA (Fisir Technologies Endpoint CA WWW
) 下再有一個中間 CA (Fisir Technologies Intermediate CA X1
)。第二個中間 CA 應該頒發最終實體證書。我已經完成了所有這些並將我的根 CA 導入為受信任的根證書頒發機構(在 Windows 上)。然後,我創建了一個由第二個中間 CA 簽名的新 HTTPS 證書。我嘗試使用 Windows 上的預設證書查看器打開它,但它告訴我它沒有足夠的資訊來驗證證書。這是我所期望的,因為我只安裝了根 CA。
所以我創建了一個證書鏈,包括根 CA、兩個中間 CA 和 HTTPS 證書。我將它上傳到我的 VPS,在 nginx 中設置 HTTPS 伺服器並嘗試訪問它。
NET::ERR_CERT_INVALID
但Google瀏覽器以一個錯誤歡迎我。我點擊了地址欄中交叉的紅色鎖,它說證書無效。所以我選擇查看證書並在 Windows 預設證書查看器中再次打開它。但它沒有顯示任何錯誤。我查看了證書路徑,它顯示正確:
它還說證書是有效的。此外,我能找到的每個線上 HTTPS 檢查器都沒有顯示任何設置問題(當然,不受信任的根 CA 除外)。
我試圖修改證書的各種屬性,但它永遠不會起作用。然後我嘗試頒發與第一次完全相同的證書,但這次我使用第一個中間 CA 簽署了它。我刷新了頁面,它起作用了。
但我想使用第二個中間 CA 頒發證書。任何人都知道問題可能是什麼?
您可以在https://php.technologies.fisir.net親自檢查問題。
謝謝你。
您在這裡有幾個問題:
- 您的根 CA 證書中有一個
pathlen
-basicConstraints
不需要且未使用,但它不應該引起問題。- 您的根 CA 證書上有一個證書策略 - 這最好由您的根 CA 應用到從屬 CA。如果您想在以後更改策略或添加其他策略,則必須辭職並向所有依賴方重新頒發您的根 CA 證書。同樣,它不應該導致您報告的問題。
然而…
- 無法訪問位於http://crl.ca.technologies.fisir.net/root.crl的 CRL 分發點中的根 CA CRL 。您的依賴方無法進行鍊式建構,因為無法檢查撤銷。這假設他們檢查。
- 您的第一個從屬 CA 的 CRL 在http://crl.ca.technologies.fisir.net/intermediate-x1.crl也無法訪問- 與上述相同。
- 在http://crl.ca.technologies.fisir.net/x1-endpoint-www.crl也無法訪問您的頒發 CA 的 CRL - 這裡有一個模式 ;-)
- 授權資訊訪問擴展中的 OCSP 伺服器不可訪問(它甚至無法解析為 IP 地址)。使用 OCSP 檢查撤銷的依賴方將失敗。
我猜您的問題歸結於依賴方(Chrome 等)無法檢查吊銷,因此無法成功建構證書鏈。