MySql Conexão SSL com JAVA
12/08/2017
0
Prezados,
Gostaria de um código exemplo de como posso usar uma conexão SSL à um banco de dados MySql usando arquivos .pem para conexão, pois estou com um banco de dados que só aceita este tipo de conexão.
Atenciosamente.
João.
Gostaria de um código exemplo de como posso usar uma conexão SSL à um banco de dados MySql usando arquivos .pem para conexão, pois estou com um banco de dados que só aceita este tipo de conexão.
Atenciosamente.
João.
João Queiroz
Curtir tópico
+ 0
Responder
Post mais votado
14/08/2017
Olá João, tudo bem?
Acredito que a maior dificuldade nesse processo seja a geração das chaves, mas como um todo não é uma tarefa difícil. Você vai precisar do keytool, que vem na instalação do JDK e pode ser encontrado na pasta bin, além do openssl, que você terá que instalar. Visitando a documentação do MySQL eu resumi os passos na receita abaixo.
Geração do .pem:
Conversão para DER:
Importação do certificado:
Geração do certificado cliente/chave RSA:
No programa você informa a localização e senha dos arquivos:
Ou parametriza a inicialização da JVM:
Além dos parâmetros usuais, você vai precisar da propriedade useSSL=true para o driver manager:
Espero que isso ajude ^^
Um abraço.
Acredito que a maior dificuldade nesse processo seja a geração das chaves, mas como um todo não é uma tarefa difícil. Você vai precisar do keytool, que vem na instalação do JDK e pode ser encontrado na pasta bin, além do openssl, que você terá que instalar. Visitando a documentação do MySQL eu resumi os passos na receita abaixo.
Geração do .pem:
keytool -import -alias mysqlServerCACert -file cacert.pem -keystore truststore
Conversão para DER:
openssl x509 -outform DER -in client-cert.pem -out client.cert
Importação do certificado:
keytool -import -file client.cert -keystore keystore -alias mysqlClientCertificate
Geração do certificado cliente/chave RSA:
keytool -genkey -keyalg rsa -alias mysqlClientCertificate -keystore keystore
No programa você informa a localização e senha dos arquivos:
System.setProperty("javax.net.ssl.keyStore","path_to_keystore_file"); System.setProperty("javax.net.ssl.keyStorePassword","password"); System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file"); System.setProperty("javax.net.ssl.trustStorePassword","password");
Ou parametriza a inicialização da JVM:
-Djavax.net.ssl.keyStore=path_to_keystore_file -Djavax.net.ssl.keyStorePassword=password -Djavax.net.ssl.trustStore=path_to_truststore_file -Djavax.net.ssl.trustStorePassword=password
Além dos parâmetros usuais, você vai precisar da propriedade useSSL=true para o driver manager:
Properties properties = new Properties(); ... properties.setProperty("useSSL", "true"); ... Connection conn = DriverManager.getConnection(url, properties);
Espero que isso ajude ^^
Um abraço.
Estevão Dias
Responder
Clique aqui para fazer login e interagir na Comunidade :)