Ssl

HTTPS 不適用於兩個中間證書

  • April 7, 2016

我正在嘗試使用 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親自檢查問題。

謝謝你。

您在這裡有幾個問題:

  1. 您的根 CA 證書中有一個pathlen-basicConstraints不需要且未使用,但它不應該引起問題。
  2. 您的根 CA 證書上有一個證書策略 - 這最好您的根 CA 應用到從屬 CA。如果您想在以後更改策略或添加其他策略,則必須辭職並向所有依賴方重新頒發您的根 CA 證書。同樣,它不應該導致您報告的問題。

然而…

  1. 無法訪問位於http://crl.ca.technologies.fisir.net/root.crl的 CRL 分發點中的根 CA CRL 。您的依賴方無法進行鍊式建構,因為無法檢查撤銷。這假設他們檢查。
  2. 您的第一個從屬 CA 的 CRL 在http://crl.ca.technologies.fisir.net/intermediate-x1.crl也無法訪問- 與上述相同。
  3. 在http://crl.ca.technologies.fisir.net/x1-endpoint-www.crl也無法訪問您的頒發 CA 的 CRL - 這裡有一個模式 ;-)
  4. 授權資訊訪問擴展中的 OCSP 伺服器不可訪問(它甚至無法解析為 IP 地址)。使用 OCSP 檢查撤銷的依賴方將失敗。

我猜您的問題歸結於依賴方(Chrome 等)無法檢查吊銷,因此無法成功建構證書鏈。

引用自:https://serverfault.com/questions/768720