gpt4 book ai didi

java - 使用 BasicDataSource 通过 SSL 安全连接到 mysql

转载 作者:行者123 更新时间:2023-11-29 18:09:48 24 4
gpt4 key购买 nike

我正在尝试使用 SSL 保护应用程序中的 MySQL 连接。我目前拥有的相关代码:

    BasicDataSource dataSource = new BasicDataSource();
dataSource.setUsername(connectorConfig.getUser());
dataSource.setPassword(connectorConfig.getPassword());
String uri = connectorConfig.getConnectURI();
dataSource.setUrl(uri);
dataSource.setValidationQuery(getValidationQuery());
dataSource.setTestOnBorrow(true);
datasource.setDriverClassLoader(getClass().getClassLoader());
datasource.setDriverClassName("com.mysql.jdbc.Driver");

System.setProperty("javax.net.ssl.keyStore", "/Users/xx/xx/client.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "xx");
System.setProperty("javax.net.ssl.trustStore", "/Users/xx/xx/server.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "xx");

final DBI dbi = new DBI(datasource);

我正在使用DBCP2 BasicDataSource用于数据源管理和 JDBI用于执行查询。但是,上面的代码不起作用,因为我在尝试建立与 mysql 服务器的连接时收到以下错误:

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

对于在这种情况下如何向 MySQL 服务器提供 SSL 上下文参数有什么想法吗?

PS:我相信我的 SSL 配置是正确的,因为我能够从命令行使用客户端 keystore 连接到 MySQL 服务器。

最佳答案

您可以在信任库中添加服务器的证书,但首先使用 keytool 命令检查它是否已存在。如果仍然无法正常工作,请使用调试属性 ( -Djavax.net.debug=all ),然后我们将在输出中检查您真正使用的信任库以及交换的证书。

关于java - 使用 BasicDataSource 通过 SSL 安全连接到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47493286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com