
我有一個 SSL 客戶端/伺服器應用程式。
我的 SSL 用戶端在其信任儲存中僅配置了一個根憑證授權單位(我們稱之為 rootCA1)。
然而,我的 ssl 伺服器會產生一個由中間 CA(我們稱之為 interCA1)簽署的憑證。
中間 CA 的憑證(我們稱之為 deviceCert)由 rootCA1(客戶端信任)簽署。 SSL 伺服器在 ssl hello 期間產生 interCA1 和 rootCA1 的憑證以及 deviceCert。
現在 openssl 在客戶端拒絕此類連線。
Openssl 應該能夠透過查看來建立信任鏈deviceCert--signed by-->interCA1--signed by-->rootCA1
由於它信任rootCA1並且信任鏈可以在我的理解中看到。
那為什麼會失敗呢?為什麼需要在客戶端的信任儲存中設定中間 CA?
答案1
我認為配置所有中間CA憑證的原因如下。
為了方便論證,我們假設信任鏈中只需要根 CA 的憑證。
然後,用戶端可以信任所有由根 CA 簽署的憑證以及其憑證由根 CA 簽署的任何其他中間 CA(或由擁有由根 CA 簽署的憑證的任何其他中間 CA 簽署)的憑證。
現在,如果中間CA的私鑰因某種原因而洩露,那麼這將是一個問題。
因此,透過在信任儲存中配置中間 CA,客戶端聲明它信任由其簽署的證書,並且其私鑰不會受到損害。
當然有 CRL,但這是一個子主題