cでOpenSSLライブラリを使用して、PEMファイルから完全な証明書チェーンをメモリに読み込む最良の方法は何ですか?入力は1..n証明書が連結された単一のPEMファイルで、出力はSTACK_OF(X509)*
でなければなりません。次のように単一の証明書についてはOpenSSLを使用してPEMファイルからSTACK_OF(X509)*に証明書チェーンをロード
、それらをロードする最も簡単な方法は次のとおりです。
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
コンテキスト。
したがって、ファイルから証明書チェーンをロードする最も良い方法は何ですか?私はいずれかを見つけることができませんでした
STACK_OF(X509)* ca_stack = sslctx->extra_certs;
:
FTRでは、OpenSSL 1.0.2がSSLCTX_get0_chain_certs()を導入して、追加の証明書にアクセスしました。 –
@Daniel Roethlisberger、ありがとう、よく知る – sirgeorge