mba12 Ho avuto lo stesso problema, grazie per la risposta!
Quindi, la soluzione è qui (come hai sottolineato):Come connettersi a MySQL con X509 utilizzando JDBC?
Ho trovato anche questo:importazione di un certificato x509 esistente e di una chiave privata in Java keystore da utilizzare in ssl
Solo per chiarimento
javax.net.ssl.keyStore deve essere certificato client + chiave combinati, non solo certificato client come descritto nella guida MySQL.
Per riassumere
- Abbiamo:
server-ca.pem - Certificato MySQL CA, può essere scaricato da "Configurazione SSL -> Visualizza certificato CA server"
client-cert.pem - chiave pubblica client, scaricabile da "Certificati client -> certificato appena creato"
client-key.pem - chiave privata del client, scaricabile solo da "Finestra di dialogo Crea nuovo certificato SSL"
Descritto qui:https://cloud.google.com/sql/docs/ configure-ssl-istanza
Salviamoli in istanza-server/ cartella e crea jks/ cartella per i file generati nel passaggio 2.
-
Crea
truststorefile2.1. Copia i
cacertsoriginali di JAVA ajks/truststore.jks:cp $JAVA_HOME/jre/lib/security/cacerts jks/truststore.jks2.2. Aggiungi il certificato CA di MySQL Server/CA di Google Cloud SQL Server
server-ca.pemal truststore predefinito di JAVAcacertsche abbiamo copiato nel passaggio 2.1.:keytool -importcert -noprompt -trustcacerts -keystore jks/truststore.jks -storepass changeit -alias googlecloudsqlservercacert -file server-instance/server-ca.pem -
Crea
keystorefile3.1. Converti certificato x509 e chiave privata in un file pkcs12:
openssl pkcs12 -export -in server-instance/client-cert.pem -inkey server-instance/client-key.pem -out jks/client.p12(inserire la password obbligatoria), ad esempio:
p4ssw0rd3.2. Converti il file pkcs12 in un keystore java:
keytool -importkeystore -srckeystore jks/client.p12 -srcstoretype PKCS12 -destkeystore jks/keystore.jks -deststoretype JKS(inserisci le stesse password), ad esempio:
p4ssw0rd
Informazioni sulla conversione:https://blog.ejbca. org/2008/02/converting-keystores-between-jks-and.html