mariadb-connector SSL方式连接数据库失败
场景描述
使用jdbc无法连接数据库,报如下错误:
unable to find certification path to requested target
原因分析
从错误截图中可以看出,使用的是mariadb的jar包,而非MySQL的官方驱动包,而mariadb与官方的使用方法略有区别。
解决方案
对于mariadb-java-client-2.7.5的连接串应该为:
- 不提供CA证书,不对服务端证书校验:
String url = "jdbc:mysql://ip:port/mysql?useSsl=true&trustServerCertificate=true";
- 提供CA证书,对服务端证书进行校验:
String url = "jdbc:mysql://ip:port/mysql?useSsl=true&serverSslCert=D:\\ca.pem&disableSslHostnameVerification=true";
注意:RDS for MySQL实例不支持hostname校验,因此需要设置disableSslHostnameVerification=true,不同mariadb jar包版本设置方式不同,可查看对应版本的使用说明。