【发布时间】:2021-10-13 22:41:01
【问题描述】:
我有 Mysql 8.0.19 作为 docker 实例。 在我们之前的应用程序中,我们使用 JDK 的 SSL 默认密钥库。 使用 JDK 与 Mysql 服务器的密钥库连接在 SSL 和没有 SSL 的情况下都很好。 这里我们没有手动为 Mysql 配置 SSL。我们使用的是 Mysql 的默认 SSL 机制。
现在出于某种原因,我们决定使用我们自己的密钥库,并使用以下变量覆盖 JVM 的密钥库
-Djavax.net.ssl.keyStore=$keystorePath$
-Djavax.net.ssl.keyStorePassword=$sslKeyStorePwd$
-Djavax.net.ssl.trustStore=$keystorePath$"
-Djavax.net.ssl.trustStorePassword=$sslKeyStorePwd$
在此之后,SSL 与 mysql 的连接失败并出现以下错误
javax.net.ssl|ERROR|01|main|2021-08-10 16:20:30.019 IST|TransportContext.java:313|Fatal (UNKNOWN_CA): Received fatal alert: unknown_ca (
"throwable" : {
javax.net.ssl.SSLHandshakeException: Received fatal alert: unknown_ca
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:128)
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:308)
at java.base/sun.security.ssl.Alert$AlertConsumer.consume(Alert.java:279)
Exception in thread "main" com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174)
在 /var/lib/mysql/ 我们有 ca.pem,ca-key.pem,client-cert.pem,client-key.pem, public_key.pem,private_key.pem,server-cert.pem, server-key.pem。
为了解决这个错误,我尝试将 ca.pem、client-cert.pem、server-cert.pem 导入我们的密钥库,但没有成功。
【问题讨论】:
标签: java mysql ssl openssl ssl-certificate