我希望在使用Jersey和Tomcat的应用程序中使用jdbc连接使用SSL进行保护。mySQL服务器已经支持SSL,我在运行NetBeans的计算机上有必要的SSL证书文件,我可以从mySQL工作台使用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"/>
如何在上下文的节中指定。cml文件连接应该使用SSL完成吗?
灵感来自一个类似问题的答案-配置spring通过ssl连接到mysql
SSL设置可以在URL中传递:
url="jdbc:mysql://ip.address:3306/db?autoReconnect=true&verifyServerCertificate=false&useSSL=true&requireSSL=true"/
我没有找到如何使verifyServerCertificate=true
选项工作的方法-可能需要指定CA证书的位置,
对自签名证书的支持最近被添加到MariaDB JDBC驱动程序中(它也可以用于连接MySQL)。最新版本(截至撰写本文时为1.1.3)还允许您在运行时直接指定服务器证书,这样您就不需要预先配置密钥存储库或导入证书。
需要设置的两个属性是useSSL
和serverSslCert
。后者可以是证书本身(一个字符串值),也可以是包含证书的文件的路径(完整路径或相对类路径)。
url="jdbc:mysql://your-server.example.com:3306/db?autoReconnect=true&useSSL=true&serverSslCert=classpath:path/to/server.crt
有关如何连接的完整工作示例,请参阅此处。这是一个通用的JDBC示例(不使用Spring),但应该是一个很好的备忘单。