0

LDAPサーバーでStart Tlsを機能させるのに苦労しています。Spring コンテキスト ファイルでキーストアとパスワードを構成しました。私の設定は SSL で機能しているようですが、Star Tls が鳥肌を引き起こしています。LDAP サーバーのラッパーに、StarTlsHandler を ExtendedOperationHandler として追加しました。他にも何か設定する必要がありますか。

JDK 1.6.0_15 を使用しています

キーストアとパスワードは現時点でハードコードされていますが、SSL またはデバッグを使用すると問題ないようです。

JLdap クライアントを使用して実装をテストしています。

Handler 用に追加したコード スニペットを次に示します。ldapServer.setCertificatePassword("シークレット"); ldapServer.addExtendedOperationHandler(新しい StartTlsHandler());

以下では、サーバー側のスタック トレースを確認できます。クライアント トレースはさらに下にあります。

2011-05-10 12:51:29,345 [rThread-4861-21] DEBUG [org.apache.directory.server.ldap.handlers.extended.StartTlsHandler] LDAP サービスの設定 2011-05-10 12:51:29,345 [rThread -4861-21] DEBUG [org.apache.directory.server.ldap.handlers.extended.StartTlsHandler] provider = SUN バージョン 1.6 2011-05-10 12:58:31,029 [rThread-4861-21] エラー [org.apache .directory.server.core.security.CoreKeyStoreSpi] ERR_68 キーの抽出に失敗しました。java.lang.IllegalStateException: ERR_436 プリンシパルに使用される名前は正規化する必要があります! org.apache.directory.server.core.LdapPrincipal.(LdapPrincipal.java:76) で org.apache.directory.server.core.security.CoreKeyStoreSpi.getTlsEntry(CoreKeyStoreSpi.java:84) で org.apache.directory. java.security.KeyStore.getKey(KeyStore.java:

****javax.net.debug=all によるクライアント トレース;****

keyStore は次のとおりです: C:/jdk/cacerts keyStore タイプは次のとおりです: jks keyStore プロバイダは次のとおりです: init keystore init keymanager of type SunX509 trustStore は次のとおりです: C:\jdk\cacerts trustStore タイプは次のとおりです: jks trustStore プロバイダは次のとおりです: init truststore は信頼できる証明書として追加します:件名: CN=SwissSign Platinum CA - G2、O=SwissSign AG、C=CH 発行者: CN=SwissSign Platinum CA - G2、O=SwissSign AG、C=CH アルゴリズム: RSA; シリアル番号: 0x4eb200670c035d4f 2006 年 10 月 25 日水曜日 10:36:00 CEST から 2036 年 10 月 25 日土曜日 10:36:00 CEST まで有効

SecureRandom のシードのトリガー シードの SecureRandom %% キャッシュされたクライアント セッションなし *** ClientHello、TLSv1 RandomCookie: GMT: 1288255192 バイト = { 100, 146, 27, 29, 47, 10, 97, 247, 253, 145, 49, 147 , 239, 157, 90, 4, 34, 15, 99, 243, 191, 156, 251, 25, 64, 42, 210, 231 } Session ID: {} Cipher Suites: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA] Compression Methods: { 0 }


[書き込み] MD5 および SHA1 ハッシュ: len = 73 0000: 01 00 00 45 03 01 4D C9 37 D8 64 92 1B 1D 2F 0A ...E..M.7.d.../. 0010: 61 F7 FD 91 31 93 EF 9D 5A 04 22 0F 63 F3 BF 9C a...1...Z.".c... 0020: FB 19 40 2A D2 E7 00 00 1E 00 04 00 05 00 2F 00 ..@…………/。0030: 33 00 32 00 0A 00 16 00 13 00 09 00 15 00 12 00 3.2........ 0040: 03 00 08 00 14 00 11 01 00 ....... .. main, WRITE: TLSv1 Handshake, length = 73 [write] MD5 and SHA1 hash: len = 98 0000: 01 03 01 00 39 00 00 00 20 00 00 04 01 00 80 00 ....9... . ...... 0010: 00 05 00 00 2F 00 00 33 00 00 32 00 00 0A 07 00 ..../..3..2..... 0020: C0 00 00 16 00 00 13 00 00 09 06 00 40 00 00 15 ..........@... 0030: 00 00 12 00 00 03 02 00 80 00 00 08 00 00 14 00 ......... ........ 0040: 00 11 4D C9 37 D8 64 92 1B 1D 2F 0A 61 F7 FD 91 ..M.7.d.../.a... 0050: 31 93 EF 9D 5A 04 22 0F 63 F3 BF 9C FB 19 40 2A 1...Z.".c.....@ 0060: D2 E7 .. メイン、書き込み: SSLv2 クライアントの hello メッセージ、長さ = 98 メイン、読み取り: TLSv1 アラート、長さ = 2 メイン、RECV TLSv1 ALERT: 致命的、handshake_failure メイン、closeSocket() と呼ばれるメイン、例外処理: javax. net.ssl.SSLHandshakeException: 致命的なアラートを受信しました: handshake_failure エラー: LDAPException: 安全な接続をネゴシエートできませんでした (91) 接続エラー javax.net.ssl.SSLHandshakeException: 致命的なアラートを受信しました: handshake_failure

4

1 に答える 1

1

現在、TlsHandler は uid=admin,ou=system エントリからのみ証明書を読み取ることができます。証明書とキーを admin エントリの適切な属性値 (uid=admin,ou=system) に設定した後で試すことができますか。これを最新のトランクで修正しようとします。(バグレポートを提出していただければ幸いです)。

于 2011-05-10T20:55:39.770 に答える