前言
因为工作中上层领导发话,保密级别高的数据库交互需要用SSL连接,然后集体懵逼了,都没有弄过,问过自己的朋友也都没搞过这些,网上找的案例总是失败,最后参照MySql官网终于打通了x509的连接,接下来上实例
将客户端密钥和证书文件转换为 PKCS #12 存档
首先准备好client-cert.pem和client-key.pem文件,然后执行以下指令,如果没有安装openssl可以下载安装或在linux上执行,然后download生成的p12文件
openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem -name "mysqlclient" -passout pass:mypassword -out client-keystore.p12
将客户端密钥和证书导入 Java 密钥库:
Windows系统下进入java bin目录运行
keytool -importkeystore -srckeystore client-keystore.p12 -srcstoretype pkcs12 -srcstorepass mypassword -destkeystore keystore -deststoretype JKS -deststorepass mypassword
配置连接
这是最后一步,可以通过三种方式实现:
1.使用 Java 命令行参数
-Djavax.net.ssl.keyStore=path_to_keystore_file
-Djavax.net.ssl.keyStorePassword=mypassword
2.直接在客户端代码中设置系统属性:
System.setProperty("javax.net.ssl.keyStore","生成的keystore路径");
System.setProperty("javax.net.ssl.keyStorePassword","mypassword");
3.通过 Connector/J 连接属性:
clientCertificateKeyStoreUrl=file:生成的keystore路径
clientCertificateKeyStorePassword=mypassword
|