我想在使用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完成连接?
答案 0 :(得分:4)
受到类似问题答案的启发 - Configure spring to connect to mysql over ssl。
SSL设置可以在URL中传递:
url="jdbc:mysql://ip.address:3306/db?autoReconnect=true&verifyServerCertificate=false&useSSL=true&requireSSL=true"/
我没有找到如何使verifyServerCertificate=true
选项正常工作的方法 - 可能需要指定CA证书的位置是一些设置。
答案 1 :(得分:2)
最近,MariaDB JDBC驱动程序(也可用于连接MySQL)支持自签名证书。最新版本(编写本文时为1.1.3)还允许您在运行时直接指定服务器证书,这样您就不需要提前配置密钥库或导入证书。
要设置的两个属性是useSSL
和serverSslCert
。后者可以是证书本身(String值),也可以是包含证书的文件的路径(完整路径或类路径相对)。
url="jdbc:mysql://your-server.example.com:3306/db?autoReconnect=true&useSSL=true&serverSslCert=classpath:path/to/server.crt
有关如何连接的完整工作示例,请参阅here。这是一个通用的JDBC示例(不使用Spring),但应该是一个很好的备忘单。