2011-10-25 80 views
0

我试图在tomcat中实现JDBCRealm(如http://tomcat.apache.org/tomcat-4.1-doc/realm-howto.html#Configuring%20a%20Realm中所述)以再次检查Oracle数据库的凭证。问题是我希望数据库通过SSL进行通信。所以我配置了侦听器来使用TCPS。这样的:Tomcat JDBCRealm通过SSL使用Oracle数据库(PROTOCOL = TCPS)

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<hostname>)(PORT=1521)))<br> 
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=<hostname>)(PORT=1512))) 

生成的证书,等我有连接到使用从SQLPLUS或WLS技术合作项目数据库没有问题(我可以使用连接属性oracle.net.ssl_cipher_suites=(SSL_DH_anon_WITH_3DES_EDE_CBC_SHA,SSL_DH_anon_WITH_RC4_128_MD5,SSL_DH_anon_WITH_DES_CBC_SHA)有没有任何问题)。

但是,我不能让JDBCRealm通过TCPS与数据库一起工作。如果我配置的境界是这样的:
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99" driverName="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCPS)(HOST = <hostname>)(PORT = 1512)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <service name>)))" connectionName="<login>" connectionPassword="<password>" userTable="users" userNameCol="user_name" userCredCol="user_pass" userRoleTable="user_roles" roleNameCol="role_name" />
我收到以下错误:

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 

我进口的JKS存储证书,我在Tomcat的配置是这样的:

随着没有成功。

我不是Tomcat的专业人员(更多数据库)。我会感谢任何帮助或指引我正确的方向。提前致谢!

回答

0

错误似乎表明SSL证书不受信任。

我建议,以确认你确实有证书的信任存储区(有JDK中的命令行工具列出信任存储的内容,你可以Google一下),然后添加到Tomcat启动脚本以下参数:

javax.net.ssl.trustStore=<path to trust store> 
+0

谢谢,这对我来说是一个巨大的飞跃:)现在我有以下错误:'java.sql.SQLRecoverableException:IO错误:网络适配器无法建立连接oracle.net.ns.NetException:无法初始化ssl上下文。 oracle.net.ns.NetException:无法初始化信任存储。 java.io.IOException:密钥库被篡改,或者密码不正确java.security.UnrecoverableKeyException:密码验证失败'但是在catalina.sh中,可信赖的密码是正确的-Djavax.net.ssl.trustStore = -Djavax.net .ssl.keyStorePassword = ' – Juris

+0

它帮了很多!只需要添加javax.net.ssl.trustStorePassword = 在以前的帖子中误添加了keyStore。再次感谢! – Juris

+0

很高兴工作。 :) – maximdim