Ssl

Openldap 和 SSL 證書鏈驗證

  • July 24, 2018

我剛剛使用簡單的 PKI 在一台伺服器上為 slapd 設置了 TLS,如下所示:

ldap 證書**<中間 CA 證書<**根 CA 證書

為了從客戶端使用 TLS 連接到 ldap 伺服器,我添加了,就像我發現的許多教程一樣,根 CA 證書和 ldap 證書到受信任的證書。

我能夠通過 TLS 連接到我的 ldap 伺服器

但是,為什麼不需要中間 CA 證書?它是否需要由 ldap 伺服器連同 ldap 證書一起發送?我只在我的 slapd 配置中配置了這些:

olcTLSCACertificateFile: /etc/ldap/ssl/root.pem
olcTLSCertificateFile: /etc/ldap/ssl/ldap_crt.pem
olcTLSCertificateKeyFile: /etc/ldap/ssl/ldap_key.pem

而且似乎這些根和 ldap 證書文件中的每一個都只包含自己的證書。

我是不是誤會了什麼?為什麼它在客戶不知道中間 CA 證書是什麼的情況下工作?

完全擁有中間 CA 證書的原因是,根 CA 證書的私鑰可以保持離線狀態。

在正常的證書頒發機構設置中,根 CA 證書保持離線狀態,僅用於簽署中間 CA 證書,涉及武裝警衛、C 級員工和許多協議的罕見事件。中間 CA 私鑰保持線上狀態,用於簽署來自最終客戶的 TLS 證書請求。不可能維護那種協議來簽署每個最終證書。

在 CA 妥協的情況下,只需要替換中間 CA(以及由它簽名的證書);如果根 CA 遭到破壞,這幾乎會使 CA 停業,因為 CA 簽署的每個證書都需要更換。

此外,根 CA 必須存在於客戶端的信任庫中。客戶端決定它將接受哪些 CA 的證書,並將這些根 CA 證書保存在本地。擁有任意中間證書使 CA 在這方面具有更大的靈活性。因為它只是由根 CA 簽名,而不是根 CA,所以可以更容易地更改它(例如昇級到更安全的雜湊算法)。

在 TLS 協商期間,伺服器將發送其證書和簽署它的證書(如果不是根 CA),以及簽署該證書的證書*(*如果不是根 CA )。因為客戶端有根 CA 證書,伺服器不應該發送它。如果伺服器嘗試發送根 CA 證書,某些客戶端將拒絕連接。


在您的情況下,您沒有指定證書的來源或提供任何相關資訊,因此只能進行瘋狂的猜測。

如果它們來自私有 CA,則 TLS 證書可能已由根 CA 直接簽名,而不是由中間 CA 簽署。客戶端也可能在其信任儲存中具有中間體(儘管它不應該)。

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