11

関連する質問を参照してください。

PEM ファイルが提供されており、一部の API 呼び出しのために C++ サーバーに接続する SSL ソケットを確立するために必要であると言われました。PEMファイルを読み込んで接続する方法を知っている人はいますか? パラフレーズのパスワードも渡されました。

4

2 に答える 2

12

PEM ファイルは、サーバーへのログインに使用するクライアント証明書のようです。それがクライアント証明書であり、そのように聞こえる場合は、接続を確立するためにサーバー証明書を検証する際にも使用する ca cert ファイルが必要になる可能性があります。

CA 証明書はトラストストアに、クライアント証明書はキーストアに入れる必要があります。Java では、これらは両方とも JKS になります (ただし、PKCS12 のサポートは制限されています)。JRE と各ユーザーのデフォルトのキーストア/トラストストアの場所があります。以下の例のように、コード内でこれらのファイルの外部の場所を指定することもできます。commons-ssl ライブラリは、JKS を必要とせずに PEM を直接サポートできるようですが、私は使用していません。

Java でのこれらのキーストアのデフォルトのパスフレーズは、引用符なしの「changeit」です。

このページは、PEM をキーストア/トラストストアに読み込む必要があることを示しています。別の例を次に示します。

トラストストアとキーストアを適切に設定したら、次のJSSE システム プロパティを JVMに渡す必要があります。

javax.net.ssl.keyStore
javax.net.ssl.keyStoreType
javax.net.ssl.keyStorePassword
javax.net.ssl.trustStore
javax.net.ssl.trustStoreType
javax.net.ssl.trustStorePassword

それらを -D パラメータとして JRE に指定することも、以下の例のようにプログラムで指定することもできます。

それが終わったら、ソケットを作成するcommons-ssl の例を次に示します。また、SSLSocketの Java API もここにあります。また、Apache Commons を使用しない例も示します。

于 2009-04-06T21:54:59.767 に答える
0

SSLを処理するライブラリが必要です。John Ellinwoodが指摘したように、一部のフレームワーク(Java 2 SEなど)はこれらの組み込みを提供しますが、他のフレームワークではサードパーティのライブラリを使用する必要があります。

C開発者はopensslを直接使用することがよくありますが、簡単とは言えません。C++を使用する場合、簡単に陥りやすい「落とし穴」がいくつかあります。

QTのネットワークライブラリやPocoNetSSLなど、SSLをサポートするC++ネットワークライブラリを使用することをお勧めします。チュートリアルのドキュメントについてはこちらを、APIのドキュメントについてはこちらをご覧ください。PEMファイルを直接取得するinitializeClientを確認することをお勧めします。

于 2009-04-08T10:26:52.507 に答える