SSL连接在控制台应用程序中可用,但不能用于Glassfish
问题描述:
我无法连接到JSP应用程序中的LDAP服务器。我正在GlassFish v2上运行应用程序。下面的代码工作以及在控制台应用程序,但在JSP中使用时失败:SSL连接在控制台应用程序中可用,但不能用于Glassfish
java.security.Security.addProvider(
new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.trustStore",
"C:\\Users\\Projects\\npope-PostiniSSO\\PostiniSSO\\ssltest.keystore");
LDAPJSSESecureSocketFactory ssf = new LDAPJSSESecureSocketFactory();
LDAPConnection conn = new LDAPConnection(ssf);
conn.connect(ldapHost, sslPort);
时引发的例外是:
LDAPException: Unable to connect to server 192.168.254.128:636 (91) Connect Error java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
class com.novell.ldap.LDAPException
我怀疑我缺少配置的证书或位但找不到任何好的信息。
答
我是缺少下列行来设置其通过GlassFish的需要的特性:
System.setProperty("javax.net.ssl.keyStore",
"C:\\Users\\Nathan\\Projects\\npope-PostiniSSO\\PostiniSSO\\ssltest.keystore");
System.setProperty("javax.net.ssl.trustStorePassword",
"password");
System.setProperty("javax.net.ssl.keyStorePassword",
"password");