我想有使用泽西和Tomcat使用SSL保护应用程序中使用我的JDBC连接。 MySQL服务器已经支持SSL,我有SSL证书文件在计算机上存在必要的运行NetBeans和我可以使用SSL连接到从MySQL Workbench中的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来完成的部分指定?
通过回答类似的问题的启发- 配置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
。 后者可以是证书本身(String值),或包含证书(全路径或相对类路径)的文件的路径。
url="jdbc:mysql://your-server.example.com:3306/db?autoReconnect=true&useSSL=true&serverSslCert=classpath:path/to/server.crt
有关如何连接一个完整的工作示例见这里 。 这是一个普通的JDBC例子(不使用Spring),但应该是一个很好的备忘单来看待。