我正在尝试在tomcat中实现JDBCRealm(如http://tomcat.apache.org/tomcat-4.1-doc/realm-howto.html#Configuring%20a%20Realm中所述)以再次检查Oracle数据库的凭据。问题是我希望数据库通过SSL进行通信。所以我配置了监听器来使用TCPS。像那样:
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<hostname>)(PORT=1521)))<br>
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=<hostname>)(PORT=1512)))
生成的证书等我使用来自sqlplus或WLS的tcps连接到数据库没有问题(我可以在那里使用连接属性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 :(得分:0)
错误似乎表明SSL证书不受信任。
我建议验证你的信任库中确实有证书(JDK中有一个命令行工具列出信任库内容,你可以谷歌它)然后在Tomcat启动脚本中添加以下参数:
javax.net.ssl.trustStore=<path to trust store>