ここで説明されているように、OpenSSL の OCSP 関数を実装しようとしていますが、パラメーターとして X509 オブジェクトが必要です。私が持っているのは、.cer 形式の x.509 証明書ファイルだけです。OpenSSL で .cer 証明書を使用して X509 オブジェクトを初期化するには? (問題があれば、XCode で OpenSSL 1.0.0g を使用しています)。
1 に答える
主なケースは 2 つあります。ここでは両方について説明します。
C++ を使用していると仮定していることに注意してください。プラットフォームの選択が正しければ、これらの関数のバインディングが必要です。
最初のケースでは、証明書ファイルはいわゆる PEM 形式です。テキスト エディターで証明書を開き、人間が判読できるヘッダーを含む Base64 でエンコードされたデータが表示される場合、それは PEM ファイルです。その場合、必要な関数には署名があります
X509 *PEM_read_X509(FILE *fp, X509 **x, pem_password_cb *cb, void *u);
最初の引数は、 によって返される FILE オブジェクトへのポインタfopen()
です。最後の 3 つの引数はそのままにしておくことができますNULL
。X509
この関数は、作成されたオブジェクトへのポインタを返すかNULL
、エラーが発生した場合に返します。
2 番目のケースでは、証明書ファイルはいわゆる DER 形式です。テキスト エディターで証明書を開いてゴミが表示される場合、それはおそらく DER ファイルです。その場合、必要な関数には署名があります
X509 *d2i_X509_fp(FILE *fp, X509 **x);
2 番目の引数を残すことができるはずですNULL
。X509
この関数は、作成されたオブジェクトへのポインタを返すかNULL
、エラーが発生した場合に返します。
公式の OpenSSL ドキュメントは不完全であることで有名です。優れたリファレンス マニュアルを探している場合は、O'Reilly の「Network Security with OpenSSL」(ISBN 978-0-596-00270-1) をお勧めします。これは OpenSSL 0.9.6 / 0.9.7 向けに書かれており、一部のトピック (CRL など) を完全には網羅していませんが、すべての重要なポイントを網羅し、サンプル コードを提供しています。どちらかといえば、迷子になるのを減らすのに役立ちます:)