在 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&amp;verifyServerCertificate=false&amp;useSSL=true&amp;requireSSL=true"/

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

【讨论】:

【参考方案2】:

最近向 MariaDB JDBC 驱动程序(也适用于连接 MySQL)添加了对自签名证书的支持。最新版本(撰写本文时为 1.1.3)还允许您在运行时直接指定服务器证书,这样您就无需提前配置密钥存储或导入证书。

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

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的主要内容,如果未能解决你的问题,请参考以下文章

如何在linux中指定用于套接字的接口

如何在 AndroidManifest 中指定多个活动,一个用于启动屏幕,一个用于 mainactivity - 将原始意图传递给 mainactivy

具有数据源部署的 Tomcat 6 webapp

为啥 SonarQube 排除不适用于 sonar.javascript.file.suffixes 中指定的其他扩展?

在 JSON API 中指定排序顺序

如何在JSF XHTML中指定UTF-8字符?