4

セキュリティのために StartTLS 拡張機能を使用して、ポート 389のみをリッスンする LDAP サーバーにアクセスするようにアプリケーションを構成しようとしています。SSL 証明書のコピーを取得して、それを既知の証明書として指定できるようにしたいと考えています (私のアプリケーションは Java で記述されているため、jssecacerts ファイルで)。

ポート 636 で実行されている場合は、次のように openssl を使用します。

openssl s_client -host myhost -port 636

出力から証明書を取得します。

私の最初のことは、使用してみることでした:

openssl s_client -host myhost -port 389 -starttls ...

しかし、それは starttls の LDAP バージョンをサポートしていません。

次に、高デバッグ レベルで ldapsearch を使用してみました。

ldapsearch -ZZ -h myhost -d99 ...

送信データに証明書が含まれていることがわかりましたが、使用方法を知っている形式ではありません。

コマンド ライン ツールまたは短いプログラムを使用して証明書を取得する簡単な方法はありますか? (どの言語かは特に気にしませんが、Java が理想的です)

4

3 に答える 3

1

よく知られているInstallCertプログラムの新しいリビジョンでは、LDAP を含む複数のプロトコルで STARTTLS がサポートされるようになりました。

次のように実行してください。

java -jar installcert-usn-20131123.jar host_name:389

jssecacertsJRE ファイル ツリーのextracertsキーストア ファイルと、現在のディレクトリのキーストア ファイルに証明書が保存されます。その後、Java keytoolを使用して、証明書を他の形式にエクスポートできます。

私のブログ ページへようこそ。Java 用のもう 1 つの InstallCert が、ダウンロードと手順で STARTTLS をサポートするようになりました。

于 2013-11-28T06:33:13.210 に答える
0

さまざまな方法のいくつかを文書化しました。

はい、最後に見たopenSSLには、starttlsオプションにLDAP ptotocolを使用する機能がまだありません。次のようになります。

openssl s_client -connect remote.host:25 -starttls LDAP
于 2013-09-17T10:49:03.520 に答える
0
  1. 上部のサンプル コードを使用して、 Javadocの説明に従って接続を行います。

  2. これによりSSLSession,、ピア証明書チェーンを取得できる が得られ、そこからX509Certificateピアの を要素ゼロとして取得できます。

  3. 次に、証明書を配列Certificate.getEncoded()として取得するために使用して、必要な場所に保存します。byte[]または、新しいオブジェクトまたは古いオブジェクトに直接追加してKeyStore保存することもできます。

于 2013-09-17T01:25:43.883 に答える