私はJava LDAPクライアントで作業していますが、これを正しく行う方法に関する情報や知識がまだ不足しています。Java LDAP接続でSSL/TLSバージョンを指定する方法は?
私のコードは次のようになります
LdapContext ctx = null;
Hashtable<String, String> env = new Hashtable <String, String>();
try{
env.clear();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "url");
env.put(Context.SECURITY_PRINCIPAL, "user");
env.put(Context.SECURITY_CREDENTIALS, "password");
env.put(Context.SECURITY_PROTOCOL, "ssl");
env.put("java.naming.security.ssl.ciphers", "SSL_RSA_EXPORT_WITH_RC4_40_MD5");
ctx = new InitialLdapContext(env, null);
} catch(NamingException nex) {
// error handling
}
次のことは、現時点では起こら:
- 私はTLSv1の接続が私のLDAP-Serverの間で確立なっていることがわかり、SSL接続をデバッグします私のプログラマー。私は含まれる暗号を追加
- をしかし:私は今欠けているもの
*** ClientHello, TLSv1.2
と*** ServerHello, TLSv1
:私は、SSLハンドシェイク時に私のクライアント&サーバーに対して以下を参照してください
- をしかし:私は今欠けているもの
- 私はクライアントのハローメッセージで提供されているサポートされている暗号のリストでそれを見ることはできません
- 私のクライアントが自分のハローメッセージでTLS1.2を提供するよう指定していませんでした。
- TLSまたはSSLを使用したい場合、TLSまたはSSLのいずれのバージョンを使用するかを自分で判断できたらどうすればいいですか? (だから、例えばTLS 1.1だけ許可することができます& 1.2)
どのようにClientHelloを見ていますか? clientHelloは、クライアントが知っている "暗号スイート"のリストを、レジストリに表示されているようにクライアントの好みによって並べ替えます:https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls -parameters-4 – jwilleke
私は '-Djavax.net.debug = ssl:session'を使ってNetbeansのssl接続をデバッグしています。私は暗号リストを見ることができますが、 'env.put(" java.naming.security.ssl.ciphers "、" SSL_RSA_EXPORT_WITH_RC4_40_MD5 ");' – Alkahna
'SSL_RSA_EXPORT_WITH_RC4_40_MD5'で真に追加した暗号は含まれていません。暗号化を解除することができます。 –