2016-07-27 204 views
0

正如我們所知,在使用openssl API創建SSL連接時,我們創建了一個SSL_CTX上下文對象,其中加載了所有證書和密鑰。將CA證書加載到OpenSSL

要設置等認證,我們加載使用SSL_CTX_load_verify_locations API的CA證書(CA存儲在一個文件中)

但現在在我的情況下,CA是不是在文件中,我有一個X509 *issuerCert。 現在如何設置issuerCertSSL_CTX對象?

我發現這一點: - C++/OpenSSL: Use root CA from buffer rather than file (SSL_CTX_load_verify_locations)

在上述方案中,我們使用SSL_CTX_get_cert_store創建X509_STORE *終於在其添加的X509 *issuerCert

現在我很困惑,因爲將此證書添加到X509_STORE *只在商店中添加它,該證書信息將如何鏈接到SSL_CTX

由於最終我們通過SSL_CTXSSL_connect所有驗證(握手)發生在幕後。那麼當使用SSL_CTX_get_cert_store而不是 SSL_CTX_load_verify_locations時,CA證書信息 將如何達到SSL_connect

回答

1

在上面的解決方案,我們正在創建使用 SSL_CTX_get_cert_store的X509_STORE *最後加X509 * issuerCert在裏面。

您不是使用SSL_CTX_get_cert_store「創建」證書商店。您正在獲取指向SSL_CTX一部分的證書存儲區的指針。對SSL證書商店的任何更新都將反映在SSL_CTX中。請注意,API具有以SSL_CTX作爲參數的以下語法:

X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *ctx); 
+0

Thanx。請看看你是否可以在這裏幫助我[鏈接](http://stackoverflow.com/questions/38655411/how-to-convert-x509-certificate-to-stack-ofx509-name/38662865#38662865) – User1234