在context.xml中指定用于jdbc的SSL

时间:2013-05-13 13:41:58

标签: mysql netbeans ssl jdbc

我想在使用Jersey和Tomcat保护的应用程序中使用我的jdbc连接。 mySQL服务器已经支持SSL,我在运行NetBeans的计算机上有必要的SSL证书文件,我可以使用MySQL Workbench的SSL连接到mySQL服务器。

目前,不安全连接的定义如下:

<Resource name="jdbc/Colabo" auth="Container" type="javax.sql.DataSource"
           maxActive="100" maxIdle="30" maxWait="10000"
           username="xxxx" password="yyyyy" driverClassName="com.mysql.jdbc.Driver"
           url="jdbc:mysql://ip.address:3306/db?autoReconnect=true"/>

如何在context.cml文件的部分中指定应使用SSL完成连接?

2 个答案:

答案 0 :(得分:4)

受到类似问题答案的启发 - Configure spring to connect to mysql over ssl

SSL设置可以在URL中传递:

url="jdbc:mysql://ip.address:3306/db?autoReconnect=true&amp;verifyServerCertificate=false&amp;useSSL=true&amp;requireSSL=true"/

我没有找到如何使verifyServerCertificate=true选项正常工作的方法 - 可能需要指定CA证书的位置是一些设置。

答案 1 :(得分:2)

最近,MariaDB JDBC驱动程序(也可用于连接MySQL)支持自签名证书。最新版本(编写本文时为1.1.3)还允许您在运行时直接指定服务器证书,这样您就不需要提前配置密钥库或导入证书。

要设置的两个属性是useSSLserverSslCert。后者可以是证书本身(String值),也可以是包含证书的文件的路径(完整路径或类路径相对)。

url="jdbc:mysql://your-server.example.com:3306/db?autoReconnect=true&useSSL=true&serverSslCert=classpath:path/to/server.crt

有关如何连接的完整工作示例,请参阅here。这是一个通用的JDBC示例(不使用Spring),但应该是一个很好的备忘单。