如何在MariaDB连接串中内嵌DER格式CA证书连接AWS RDS?
操作步骤与示例
1. 转换AWS RDS CA证书格式
你手里的global-bundle.pem是PEM格式的证书包,需要先转成DER格式并做Base64编码,才能内嵌到连接串中:
Linux/macOS 命令:
# 把PEM证书包转成DER格式的证书链,再Base64编码(无换行) openssl crl2pkcs7 -nocrl -certfile global-bundle.pem | openssl pkcs7 -print_certs -outform DER | base64 -w 0
Windows 命令:
先把PEM转成DER:
openssl x509 -in global-bundle.pem -out global-bundle.der -outform DER
再提取无换行的Base64字符串:
certutil -encode global-bundle.der - | findstr /v "-----BEGIN CERTIFICATE-----" | findstr /v "-----END CERTIFICATE-----"
执行后会输出一长串无换行的Base64字符串,复制保存好。
2. 构建Spring Cloud Data Flow兼容的JDBC URL
因为要用mysql协议的MariaDB连接器,URL开头为jdbc:mysql://,同时添加SSL相关参数,把刚才的Base64证书串嵌入serverSslCert参数(前缀base64:):
示例URL:
jdbc:mysql://your-rds-instance.xxxxxx.us-east-1.rds.amazonaws.com:3306/your-db-name?useSSL=true&verifyServerCertificate=true&sslMode=VERIFY_CA&serverSslCert=base64:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR...(此处替换为你生成的完整Base64字符串)
参数说明:
useSSL=true:开启SSL连接verifyServerCertificate=true:验证服务器证书sslMode=VERIFY_CA:只验证CA证书合法性(如果需要验证服务器域名,可改为VERIFY_IDENTITY)serverSslCert=base64:<Base64串>:内嵌DER格式的CA证书(Base64编码后)
3. Spring Cloud Data Flow配置示例
在application.properties(或application.yml)中配置数据源:
properties格式:
spring.datasource.url=jdbc:mysql://your-rds-instance.xxxxxx.us-east-1.rds.amazonaws.com:3306/your-db-name?useSSL=true&verifyServerCertificate=true&sslMode=VERIFY_CA&serverSslCert=base64:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR... spring.datasource.username=your-db-username spring.datasource.password=your-db-password spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
注意事项:
- 确保MariaDB JDBC驱动版本≥1.1.3(该版本开始支持内嵌DER证书的Base64格式)
- 如果使用的是单个CA证书而非证书包,直接用
openssl x509 -in ca.pem -outform DER | base64 -w 0转换即可
内容的提问来源于stack exchange,提问作者adesai
相关产品推荐
相关产品推荐

