C で OpenSSL ライブラリを使用して、完全な証明書チェーンを PEM ファイルからメモリにロードする最良の方法は何ですか? 入力は、1..n 個の証明書が連結された単一の 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
、最初の証明書を を使用して取得できますが、証明書チェーンの残りをコンテキストから取得するAPI 関数SSL_get_certificate()
はないようです。SSL
では、ファイルから証明書チェーンをロードする最良の方法は何でしょうか?