Я пытаюсь получить образец приложения Java для подключения к экземпляру Mysql gen2, который у меня есть в GCP. Я использую SSL, и IP-адрес занесен в белый список. Я подтвердил подключение к экземпляру, используя командную строку mysql и передав файлы client-cert.pem, client-key.pem и server-ca.pem. Теперь, чтобы подключиться к нему из 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");
Для 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`
Любые идеи о том, что я могу делать неправильно?