本文主要介绍在Windows10系统的Java环境中,如何通过SSL加密方式连接云原生关系型数据库PolarDB MySQL。
.jks
结尾的文件,具体文件信息请参见设置SSL加密。例如,解压后的路径为D:\ApsaraDB-CA-Chain\ApsaraDB-CA-Chain.jks
。说明:
- 在Java中使用JKS证书文件时,jdk7和jdk8需要修改默认的jdk安全配置,在应用程序所在主机的jre/lib/security/Java.security文件中,修改如下两项配置:
jdk.tls.disabledAlgorithms=SSLv3, RC4, DH keySize < 224
jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024- 若不修改jdk安全配置,会报如下错误。其它类似报错,一般也都由Java安全配置导致。
Javax.net.ssl.SSLHandshakeException: DHPublicKey does not comply to algorithm constraints
package com.aliyun.sample;
import com.mysql.cj.jdbc.MysqlDataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class Sample {
public static void main(String[] args) {
Connection conn = null;
MysqlDataSource mysqlDS=null;
try{
mysqlDS = new MysqlDataSource();
// set useSSL=true and provide truststore for server certificate verification.
mysqlDS.setUseSSL(true);
mysqlDS.setClientCertificateKeyStoreType("JKS");
// 您的ApsaraDB-CA-Chain.jks路径 file:/D:\ApsaraDB-CA-Chain\ApsaraDB-CA-Chain.jks
mysqlDS.setClientCertificateKeyStoreUrl("file:/D:\\xxxx\\ApsaraDB-CA-Chain.jks");
// JAVA中密码统一为apsaradb
mysqlDS.setClientCertificateKeyStorePassword("apsaradb");
mysqlDS.setTrustCertificateKeyStoreType("JKS");
// 您的ApsaraDB-CA-Chain.jks路径 file:/D:\ApsaraDB-CA-Chain\ApsaraDB-CA-Chain.jks
mysqlDS.setTrustCertificateKeyStoreUrl("file:/D:\\ApsaraDB-CA-Chain\\ApsaraDB-CA-Chain.jks");
// JAVA中密码统一为apsaradb
mysqlDS.setTrustCertificateKeyStorePassword("apsaradb");
// 您的数据库连接串
mysqlDS.setServerName("rm-xxxxxx.mysql.rds.aliyuncs.com");
// 您的数据库端口
mysqlDS.setPort(3306);
// 您的数据库账号
mysqlDS.setUser("xxxxxx");
// 您的数据库密码
mysqlDS.setPassword("xxxxxx");
// 您的数据库名
mysqlDS.setDatabaseName("xxxxxx");
conn = mysqlDS.getConnection();
}catch(Exception e){
e.printStackTrace();
} finally {
try {
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
设置SSL加密方式连接RDS MySQL版的方法请参见RDS MySQL设置SSL加密。