从外部应用程序通过ssl连接到CloudSQL Mysql
我正在尝试获取一个示例java应用程序,以连接到GCP中的Mysql gen2实例。我使用SSL,ip地址是白名单。我已经使用mysql命令行确认了与实例的连接,并传入了client-cert.pem、client-key.pem和server-ca.pem。现在,为了从spring boot java应用程序连接到它,我执行了以下操作:从外部应用程序通过ssl连接到CloudSQL Mysql,mysql,ssl,google-cloud-sql,Mysql,Ssl,Google Cloud Sql,我正在尝试获取一个示例java应用程序,以连接到GCP中的Mysql gen2实例。我使用SSL,ip地址是白名单。我已经使用mysql命令行确认了与实例的连接,并传入了client-cert.pem、client-key.pem和server-ca.pem。现在,为了从spring boot java应用程序连接到它,我执行了以下操作: 从客户端证书和密钥创建了一个p12文件,并将其添加到keystore.jks 使用server-ca.pem文件创建了信任库 在创建连接之前在main中添加了
System.setProperty("javax.net.debug", "all");
System.setProperty("javax.net.ssl.trustStore", TRUST_STORE_PATH);
System.setProperty("javax.net.ssl.trustStorePassword", "fake_password");
System.setProperty("javax.net.ssl.keyStore", KEY_STORE_PATH);
System.setProperty("javax.net.ssl.keyStorePassword", "fake_password");
jdbc:mysql://1.1.1.1:3306/sampledb?useSSL=true&requireSSL=true
restartedMain, RECV TLSv1.1 ALERT: fatal, unknown_ca
%% Invalidated: [Session-2, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]
restartedMain, called closeSocket()
restartedMain, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: unknown_ca
restartedMain, called close()
restartedMain, called closeInternal(true)
我也试着跑
openssl verify -CAfile server-ca.pem client-cert.pem`
得到了这个输出:
error 20 at 0 depth lookup:unable to get local issuer certificate`
关于我可能做错了什么有什么想法吗?检查此帖子是否涉及类似问题。在本例中,我从google cloud sql实例页面获取ca和客户端证书。所以我认为他们应该被正确地签署。如果没有,这就是我希望听到谷歌云sql的人的原因。也许这是他们方面的文档更新。