从外部应用程序

时间:2017-05-24 00:51:13

标签: mysql ssl google-cloud-sql

我正在尝试获取一个示例java应用程序来连接到我在GCP中的Mysql gen2实例。我使用SSL,IP地址列入白名单。我已使用mysql命令行确认了与实例的连接,并传入了client-cert.pem,client-key.pem和server-ca.pem。现在为了从spring boot java应用程序连接它,我做了以下事情:

  1. 从客户端证书和密钥创建了一个p12文件,并将其添加到keystore.jks
  2. 使用server-ca.pem文件创建了一个信任库。
  3. 在创建连接之前在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");
    
  4. 对于jdbc网址,我使用了:jdbc:mysql://1.1.1.1:3306/sampledb?useSSL=true&requireSSL=true

  5. 但是我无法连接到实例并从java ssl debug中看到此错误:

    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`
    

    关于我可能做错的任何想法?

0 个答案:

没有答案