Подключение к CloudSQL Mysql через ssl из внешнего приложения

Я пытаюсь получить образец приложения Java для подключения к экземпляру Mysql gen2, который у меня есть в GCP. Я использую SSL, и IP-адрес занесен в белый список. Я подтвердил подключение к экземпляру, используя командную строку mysql и передав файлы client-cert.pem, client-key.pem и server-ca.pem. Теперь, чтобы подключиться к нему из 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. Для URL-адреса jdbc я использовал: jdbc:mysql://1.1.1.1:3306/sampledb?useSSL=true&requireSSL=true

Однако я не могу подключиться к экземпляру и вижу эту ошибку из отладки java ssl:

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`

Любые идеи о том, что я могу делать неправильно?


person Anoop Gopalakrishnan    schedule 24.05.2017    source источник
comment
Проверьте, что в этой теме говорится о похожей проблеме. stackoverflow .com/questions/28958514/   -  person Hari Nair    schedule 25.05.2017
comment
В этом случае я получаю как сертификаты ca, так и клиентские сертификаты со страницы экземпляра google cloud sql. Поэтому я бы предположил, что они должны быть правильно подписаны. Если нет, то вот почему я хочу услышать от парней из google-cloud-sql. Возможно, это обновление документации на их стороне.   -  person Anoop Gopalakrishnan    schedule 26.05.2017