我们将Oracle 11g(v11.2.0)数据库配置为使用SSL加密(Oracle Advanced Security)。 我们按照SSL中Oracle JDBC Thin Driver的说明执行了此操作。只有加密,没有身份验证,这是白皮书中的“案例1”。
接下来,我们开发了一个小型测试客户端来检查我们是否可以访问现在加密的数据库。 这是一些代码:
String url = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=our_host)"
+ "(PORT=2484))(CONNECT_DATA=(SERVICE_NAME=our_service_name)))";
System.out.println("set properties");
Properties props = new Properties();
props.setProperty("user", "system");
props.setProperty("password", "our_password");
props.setProperty("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)");
System.out.println("get connection");
Connection con = DriverManager.getConnection(url, props);
System.out.println("got a connection");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select sysdate from dual");
while (rs.next()) {
System.out.println("result = "+rs.getString(1));
}
rs.close();
stmt.close();
con.close();
这很好用,并吐出正确的值。但唉只是一个测试客户。现在我们必须配置我们的Tomcat(v7.0.21)webcontainer,以便我们的web应用程序可以访问现在加密的数据库。
在加密之前,我们在dataSource
中使用了{tomcat.home}/conf/context.xml
,如下所示:
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="our_name" auth="Container"
driverClassName="oracle.jdbc.driver.OracleDriver" factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
type="javax.sql.DataSource" logAbandoned="true" maxActive="30"
maxIdle="5" maxWait="1000" removeAbandoned="true"
removeAbandonedTimeout="60" url="jdbc:oracle:thin:@our_host:1521:our_sid"
username="admin_user" password="admin_user" validationQuery="select sysdate from dual"
testOnReturn="true" />
<!-- more Resources ... -->
</Context>
我在互联网上的一些帖子中找到了几个设置(<Connector>
,例如在server.xml
- 见下文 - ,更改了jdbc瘦驱动程序URL等),但我没有做任何事情。 。我不知道如何继续甚至如何调试这个。
我取消注释并测试(失败){tomcat.home}/conf/server.xml
中的连接器:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="200" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
ciphers="SSL_DH_anon_WITH_DES_CBC_SHA, SSL_DH_anon_WITH_RC4_128_MD5, SSL_DH_anon_WITH_3DES_EDE_CBC_SHA" />
我们希望像以前一样通过.xml文件执行此操作,因此我们无需向客户发送新版本。
如果您需要更多信息,如果您告诉我如何以及在何处找到它,我很乐意为您提供一切。
感谢您的时间,
问候
勒
答案 0 :(得分:3)
好吧,我想通了......
在资源
中添加了connectionProperties属性URL =&#34; JDBC:预言:瘦:@(DESCRIPTION =(ADDRESS =(PROTOCOL =技术合作计划)(HOST = our_host)(PORT = 2484))(CONNECT_DATA =(SERVICE_NAME = our_service_name)))&# 34; ConnectionProperties中=&#34; 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&#34;