嗨,我有一个mysql服务器和一个krubnetes spring boot 2 web服务在gcloud中运行。所以问题是我不知道如何将我的client-key.pem转换为jks文件。我已经使用以下命令将client-key.pem文件转换为jks文件。
keytool -import -trustcacerts -alias root -file client-cert.pem -keystore client-cert.jks
当我在key.pem上使用时,同样的命令给我一个错误,keytool错误:java.lang.exception: input not an x.509 certificate.
pem文件很好(由Google云控制台生成),从mysql工作台完美运行。任何帮助appriacited thx!
从PEM
转换到Java KeyStore
有点复杂......
a)将证书从PEM
转换为PKCS12
:
openssl pkcs12 -export -out client-cert.pkcs12 -in client-cert.pem
b)创建并清空信任库KS
:
keytool -genkey -keyalg RSA -alias client -keystore truststore.ks
keytool -delete -alias client -keystore truststore.ks
c)将CA
导入信任库KS
:
keytool -import -v -trustcacerts -alias client-ca -file client-cert.pem -keystore truststore.ks
d)创建然后清空Java KeyStore
:
keytool -genkey -keyalg RSA -alias client -keystore keystore.ks
keytool -delete -alias client -keystore keystore.ks
e)将PKCS12
导入空的Java KeyStore
:
keytool -v -importkeystore -srckeystore client-cert.pkcs12 -srcstoretype PKCS12 -destkeystore keystore.ks -deststoretype JKS
马丁·齐特勒和我的一位同事向我指出了正确的方向。仍然不是完美的答案所以我会回答我的问题。您从google cloud获得了3个文件:client.cert.pem,client-key.pem和server-ca.pem。事实证明,你不需要server-ca.pem文件从mysql workbench连接到服务器,但是你需要它,如果你想从java连接到服务器。首先openssl,可能在任何发行版上使用以下命令安装它。
sudo apt install openssl -y
之后,您键入以下命令:
openssl pkcs12 -export -out merged.pkcs12 -in client-cert.pem -inkey client-key.pem -certfile server-ca.pem
keytool -genkey -keyalg RSA -alias client -keystore truststore.jks
keytool -delete -alias client -keystore truststore.jks
keytool -import -v -trustcacerts -alias server-ca -file server-ca.pem -keystore truststore.jks
keytool -genkey -keyalg RSA -alias client -keystore keystore.jks
keytool -delete -alias client -keystore keystore.jks
keytool -v -importkeystore -srckeystore merged.pkcs12 -srcstoretype PKCS12 -destkeystore keystore.jks -destkeystore JKS
设置这些JDBC参数:
verifyServerCertificate=true
useSSL=true
requireSSL=true
clientCertificateKeyStorePassword=password
clientCertificateKeyStoreUrl=keystore.jks
trustCertificateKeyStorePassword=password
trustCertificateKeyStoreUrl=truststore.jks
这就是人们!