在 context.xml 中指定用于 jdbc 的 SSL
Posted
技术标签:
【中文标题】在 context.xml 中指定用于 jdbc 的 SSL【英文标题】:Specify SSL to be used for jdbc in context.xml 【发布时间】:2013-05-07 13:52:22 【问题描述】:我希望在使用 Jersey 和 Tomcat 的应用程序中使用我的 jdbc 连接,以使用 SSL 进行保护。 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 完成连接?
【问题讨论】:
Configure spring to connect to mysql over ssl的可能重复 【参考方案1】:灵感来自一个类似问题的答案 - Configure spring to connect to mysql over ssl。
可以在 URL 中传递 SSL 设置:
url="jdbc:mysql://ip.address:3306/db?autoReconnect=true&verifyServerCertificate=false&useSSL=true&requireSSL=true"/
我没有找到如何使verifyServerCertificate=true
选项起作用的方法 - 可能需要指定 CA 证书的位置是一些设置。
【讨论】:
【参考方案2】:最近向 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
有关如何连接的完整工作示例,请参阅here。这是一个通用的 JDBC 示例(不使用 Spring),但应该是一个很好的备忘单。
【讨论】:
以上是关于在 context.xml 中指定用于 jdbc 的 SSL的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AndroidManifest 中指定多个活动,一个用于启动屏幕,一个用于 mainactivity - 将原始意图传递给 mainactivy
为啥 SonarQube 排除不适用于 sonar.javascript.file.suffixes 中指定的其他扩展?