JDBC 连接不支持的协议

Unsupported protocol with JDBC connection

我的任务是验证 weblogic 是否可以连接到使用 TLS 1.2 的 oracle 数据库设置。使用与 sqlnet 一起使用的 jdbc 连接信息启动 weblogic 时出现以下错误。

<Jul 6, 2016 11:21:06 AM EDT> <Error> <Deployer> <BEA-149205> <Failed to initialize the application "apptxDataSource" due to error weblogic.application.ModuleException: java.lang.IllegalArgumentException: Unsupported protocol SSLv2Hello
weblogic.application.ModuleException: java.lang.IllegalArgumentException: Unsupported protocol SSLv2Hello
at weblogic.jdbc.module.JDBCModule.prepare(JDBCModule.java:350)
at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:100)
at weblogic.application.internal.flow.ModuleStateDriver.next(ModuleStateDriver.java:175)
at weblogic.application.internal.flow.ModuleStateDriver.next(ModuleStateDriver.java:170)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
Truncated. see log file for complete stacktrace
Caused By: java.lang.IllegalArgumentException: Unsupported protocol SSLv2Hello
at com.rsa.sslj.x.aD.a(Unknown Source)
at com.rsa.sslj.x.aH.b(Unknown Source)
at com.rsa.sslj.x.aS.setEnabledProtocols(Unknown Source)
at oracle.net.nt.TcpsConfigure.configureVersion(TcpsConfigure.java:175)
at oracle.net.nt.TcpsNTAdapter.setSSLSocketOptions(TcpsNTAdapter.java:253)
Truncated. see log file for complete stacktrace

我没有直接访问数据库配置的权限,但我可以获得所需的任何信息。我想我还应该说我对 SSL 配置经验不多。任何指导将不胜感激。

要将与 Oracle 数据库的连接配置为使用 TLSv1.2(假设您的 Oracle 数据库服务器已配置为接受 TLSv1.2 连接),您首先需要使用 12.1.0.2 JDBC 瘦驱动程序带有可以从这里下载的补丁: Oracle JDBC driver download page

然后设置以下系统属性-Doracle.net.ssl_version='1.2' -Doracle.net.ssl_cipher_suites='(TLS_RSA_WITH_AES_256_CBC_SHA256)'。您当然可以添加更多密码套件。

另外一定要安装JCE Unlimited Strength Jurisdiction Policy Files.

为简单起见,我建议使用 JKS 文件作为信任库和密钥库。避免使用难以使用的钱包(您的类路径中需要 oraclepki.jar)。

最后一个提示。如果您 运行 遇到问题,您可以使用 -Djavax.net.debug=all 打开调试,这会提供很多有用的信息。