在c中使用OpenSSL庫,從PEM文件加載完整證書鏈到內存的最佳方式是什麼?輸入是單個PEM文件,並有1..n個證書級聯,輸出應該是STACK_OF(X509)*
。使用OpenSSL從PEM文件加載證書鏈到STACK_OF(X509)*使用OpenSSL *
對於單證書,加載它們的最簡單的方法如下:
SSL_CTX *sslctx = SSL_CTX_new(SSLv23_server_method());
SSL_CTX_use_certificate_file(sslctx, "certificate.pem", SSL_FILETYPE_PEM);
SSL *ssl = SSL_new(sslctx);
X509 *crt = SSL_get_certificate(ssl);
(錯誤處理,資源釋放和參考計數爲清楚起見省略;使用C99語法;「容易」,意思是「避免較低的水平BIO和ASN.1的API「)
然而,對於完整的證書鏈,SSL_CTX_use_certificate_chain_file()
可用於它們加載到SSL_CTX
和第一個證書,然後可以使用SSL_get_certificate()
檢索,但似乎沒有API function檢索來自一個證書鏈的其餘部分SSL
上下文。
那麼從文件加載證書鏈的最佳方式是什麼?
FTR,OpenSSL 1.0.2終於引入了SSL_CTX_get0_chain_certs()來訪問附加證書。 – 2015-07-03 11:21:04
@Daniel Roethlisberger,謝謝,很高興知道 – sirgeorge 2015-07-05 01:37:10