更新: SSL 経由でこれを機能させることはできませんでした。セキュリティを確保するために、VPNを実装することになりました。
私はこの問題を 2 日間トラブルシューティングしてきましたが、一生解決できません。次のスレッドを確認しました。
https://stackoverflow.com/questions/14465089/ssl-connection-in-glassfish-3-1
他の多くの中で。
更新: 申し訳ありませんが、エラーを投稿していませんでした。ここにあります:
javax.naming.CommunicationException: simple bind failed: server.local:636 [Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]
Win7 pro で GlassFish サーバー 3.1.2 と NetBeans 7.3 も使用しています。
エラーの原因となっているコードは次のとおりです。
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://server.local:636/");
// Specify SSL
env.put(Context.SECURITY_PROTOCOL, "ssl");
// Fill in secuirty/bind variables
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, config.Config.getSECURITY_PRINCIPAL()); //returns user@domain.local
env.put(Context.SECURITY_CREDENTIALS, config.Config.getSECURITY_CREDENTIALS()); //returns password
// Create the initial context
ctx = new InitialDirContext(env); //defined above as InitialDirContext ctx = null;
ldp.exe
ADサーバーでSSLが適切に構成されていることを確認するために使用しました。さらに、私は次のことを試しました:
- ここで説明されているように、クライアント証明書 (および AD CS からの CA ルート証明書) をインポートします。
を。次のコマンドを使用しました。
C:\Program Files (x86)\Java\jdk1.7.0_25>bin\keytool -import -file SBS2011.sage.local_sage-SBS2011-CA.crt -keystore .\jre\lib\security\cacerts -alias SBS2011
Enter keystore password:
Certificate already exists in keystore under alias <mykey>
Do you still want to add it? [no]: yes
Certificate was added to keystore
C:\Program Files (x86)\Java\jdk1.7.0_25>
Java をアンインストールして再インストールし、手順 1 を繰り返します。
次のコード行を追加します。
System.setProperty("javax.net.ssl.trustStore", "C:\\Program Files (x86)\\Java\\jdk1.7.0_25\\jre\\lib\\security\\cacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
その他の注意事項: コードは非 SSL 接続を使用して正常に動作しますが、ユーザーの情報を更新しようとすると LDAP エラー 53 が発生します。最後に、SSL を使用しないという解決策があれば、私は気にしません。