0
我有SSL客戶端和服務器,以及測試PKI這樣
如何加載額外的不信任證書到SSL_CTX
root_ca -> server_singing_ca -> ssl server
|--> client_signing_ca -> ssl client
服務器
,我把服務器證書和server_signing_ca證書到同一個文件並加載文件使用
SSL_CTX_use_certificate_chain_file().
這是行得通的。不信任的中間證書在握手期間自動發送給客戶端。
我的問題是:我想在握手期間儘量減少數據交換。是否有辦法讓客戶事先持有server_signing_ca證書的副本,以便我可以從服務器端刪除它?
而且我不想將server_signing_ca的證書添加到可信存儲區。
客戶端加載server_signing_ca的證書的API是什麼?我看着
SSL_CTX_add_extra_chain_cert().
但現在看來,這是爲客戶端加載client_signing_ca的證書,以形成證書鏈。
感謝您的回答。還有一個問題:我將server_signing_ca的證書添加到客戶端可信存儲區。服務器端根本沒有server_signing_ca的證書。有用。但我想知道這是標準允許的嗎?這是最佳做法嗎?我記得「只有自簽名的證書纔可以在可信的證書存儲區中」 –
@JohnCrane:根據標準,只有最上面的根CA可以從鏈中省略。我不確定最佳做法。您的根目錄可信CA(如Verisign)的可信自簽名證書位於可信任的證書存儲區中。但是,用戶根據自己的風險可以根據選擇添加其他證書。唯一需要的是客戶端必須能夠驗證服務器的身份,而不會引發任何異常。 – doptimusprime