2011-02-19 15 views
11

OpenSSLを使用してサーバーの証明書を確認しています。 OpenSSLは組み込みのルートCAなしで出荷されるため、ルートCA証明書をソフトウェアで配布する必要があります(OpenSSLに静的にリンクします)。通常、これを行う方法は、証明書ファイルをPEM形式で配布し、SSL_CTX_load_verify_locationsを呼び出すことです。C++/OpenSSL:ファイルではなくバッファからルートCAを使用する(SSL_CTX_load_verify_locations)

しかし、この関数はファイル/ディレクトリパスをとり、ルート証明書ファイルをファイルシステムから直接読み込みます。証明書をファイルシステムに保存するのではなくバイナリにハードコードすることが本当に好きです。

つまり、ファイルパスの代わりにX509 *を使用するSSL_CTX_load_verify_locationsのような機能が本当に好きです。

このようなことはありますか?または一緒にそれを一緒にハックする簡単な方法はありますか?これについて多くの情報を見つけることはできません。

ありがとうございました!

+0

SSL_CTX_load_verify_locationsを呼び出す前に、ハードコードされたルート証明書をディスクに保存できないのはなぜですか? –

+0

しかし、私たちはセキュリティアプリケーションであり、悪質な干渉を心配しています。特に、ルート証明書ファイルを見つけて上書きするのが簡単であれば、SSLで保護されたトランザクションを妨げる可能性があります。必要に応じてこのルートに進みますが、ルート証明書をバイナリ自体にコンパイルできるのは素晴らしいことです。 – DSII

+0

ルートCAをファイルに保存するよりもハードコーディングするのが安全ではありません。 –

答えて

18

SSL_CTX_get_cert_store()が検証に使用される証明書ストアへのハンドル(X509_STORE *)を取得するために使用することができる機能、及び(openssl/x509_vfy.hで)X509_STORE_add_cert()関数は、その証明書ストアに直接証明書を追加するために使用することができます。

+0

パーフェクト!どうもありがとうございました;これは素晴らしいことです。まさに私が探していたもの。ありがとう! – DSII

関連する問題