Java 使用 SSL 进行数据库连接

标签 java mysql database ssl truststore

我目前正在不使用 SSL 连接到我的数据库。我现在想使用 SSL。我的设置方式是我的数据库源在配置中。

DB_SOURCE=jdbc:mysql://myDatabaseInfo:3306/DB_NAME?
DB_USER=dbUser
DB_PW=dbPw

我可以通过使用以下参数调用我的程序来使 SSL 连接正常工作

-Djavax.net.ssl.trustStore=path\to\truststore
-Djavax.net.ssl.trustStorePassword=myPassword

我还可以通过更改代码本身中的环境变量来让它工作

dbSource += "?useSSL=true";
System.setProperty("javax.net.ssl.trustStore", "path\to\truststore");  
System.setProperty("javax.net.ssl.trustStorePassword", "myPassword");  
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(dbSource, dbUser, dbPw); 

但是,我的目标是在不对我的代码进行任何更改且无需更改我使用的 VM 参数的情况下建立 SSL 连接。有什么方法可以设置我的来源以包含此信息?

类似:

jdbc:mysql://myDatabaseInfo:3306/DB_NAME?useSSL=true&trustCertificateKeyStoreUrl=path\to\truststore&trustCertificateKeyStorePassword=myPassword

我完全尝试了这一点,但它不起作用,理想情况下,我可以将信息添加到我已有的配置中,这样我就不必在多个地方进行更改。有什么想法吗?

最佳答案

建议一:把你的信任库代替java的信任库,或者把你的证书导入java的信任库:${java.home}/lib/security/cacerts

建议2:编写自己的驱动扩展com.mysql.jdbc.Driver。将 SSL 配置放入新代码中。虽然您需要编码,但不在主应用程序中。不确定您是否可以接受。

关于Java 使用 SSL 进行数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13979622/

相关文章:

java - struts2如何从jsp读取值迭代器到action

java - 在 Java GUI 中生成新进程时从 View 中删除任务栏

java - 从方法中获取类名

python - 如何将 xampp 中的 MYSql 用于 python 3?

sql - 我的 NOT EXISTS 结果并不像预期的那样

java - 创建 EJB 3.0 或 3.1

Mysql查询求和数量

Mysql 撤销root用户的权限

mysql - 不正确的数据库图表 - MySQL Workbench 选项

php - 如何在mysql数据库连接中使用try/catch异常