, , - SSL- ManagedVM
.
Java Keystore SSL, Cloud SQL ( server-ca.pem, client-cert.pem client-key.pem):
echo '---------- GENERATE TrustStore'
keytool -import -alias mysqlCACert -file server-ca.pem -keystore truststore -storepass 123456
echo '---------- GENERATE KeyStore'
openssl pkcs12 -export -in client-cert.pem -inkey client-key.pem \
-out client.p12 -name clientalias -CAfile server-ca.pem -caname root
keytool -importkeystore -deststorepass 123456 -destkeystore keystore \
-srckeystore client.p12 -srcstoretype PKCS12 -srcstorepass 123456 -alias clientalias
You will get two files: truststoreand keystore, which you will need to put into your target virtual machine.
Secondly, you should use custom Dockerfile, with files from the previous step:
FROM gcr.io/google_appengine/java-compat
RUN mkdir /keys
ADD keystore /keys/
ADD truststore /keys/
ENV JAVA_OPTS -Djavax.net.ssl.keyStore=/keys/keystore -Djavax.net.ssl.keyStorePassword=123456 -Djavax.net.ssl.trustStore=/keys/truststore -Djavax.net.ssl.trustStorePassword=123456
ADD . /app/
And of course, don't forget to say that the MySQL driver always uses SSL:
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://__CLOUD_SQL_IP__:3306/__CLOUD_SQL_DB__?useSSL=true&requireSSL=true");
PS Please note that I use the password 123456 to protect my keys. This is just an example. Do not use it in your project. This is already done.
source
share