から私は、SSL-証明書付きのGoogle Cloud SQL(MySQLの5.7)を設定しました。のMySQL(GoogleクラウドSQL):拒否されたユーザーのアクセスは、Javaの
今私はHeidiSQLに接続しようとすると、それが次の設定で動作します:
- クライアント証明書
- サーバー証明書
- クライアントキー
- URL:ポート
- はlocalhost:23306
- ユーザー
- パスワード
- 私はポート23306.に私の本番サーバーから自分のローカルマシンにポートをforwarededデータベース
(DB-アクセスが本番サーバのIPアドレスに制限されている)
今私がしよう私の春のブートアプリケーションを同じ設定で走らせてください。しかし、私は常に、このエラーが出る:
java.sql.SQLException: Access denied for user 'mysqluser'@'x.x.x.x' (using password: YES)
私は次のパラメータを使用してそれらを使用するキーストアおよびトラストストアおよび構成されたJVMを作成しました:
-Djavax.net.ssl.keyStore=files/keystore-dev
-Djavax.net.ssl.keyStorePassword=test
-Djavax.net.ssl.trustStore=files/truststore-dev
-Djavax.net.ssl.trustStorePassword=test
私はこれが動作することを前提とし、それ以外の私はとなるだろうので、 AccessDenied例外を取得する前のSSL例外。
私はapplication.properties私の春ブートアプリケーションので、以下の設定を使用:
spring.datasource.url=jdbc:mysql://localhost:23306/test_db?autoReconnect=true&useSSL=true&requireSSL=true
spring.datasource.username=mysqluser
spring.datasource.password=test
spring.datasource.driverClassName=com.mysql.jdbc.Driver
私はHeidiSQLにこれらの設定をコピーし、それが動作します... 私は私は何をすべきかわかりませんこれを修正しようとします。何か案は?
ありがとうございます。
編集1:
私はSSLのデバッグをオンにし、次の警告を見ることができません。
Warning: no suitable certificate found - continuing without client authentication
私は、接続が戻って非SSL接続にフォールようだと私は無効に非を持っていますmysql-serverへの-SSL接続。
しかし、あなたはこれが動作しない理由を任意のアイデアを持っていますか?
私は、キーストアとトラストストアの証明書からとGoogleのクラウドSQLから鍵を生成するために、以下の記述を使用: https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-using-ssl.html
EDIT2は ここでSSLデバッグからいくつかの出力です。 は、それが何のキーがキーストアに見つからなかったことだろうか?
keyStore is : files/keystore
keyStore type is : jks
keyStore provider is :
init keystore
init keymanager of type SunX509
trustStore is: files\truststore
trustStore type is : jks
trustStore provider is :
init truststore
adding as trusted cert:
Subject: C=US, O="Google, Inc", CN=Google Cloud SQL Server CA
Issuer: C=US, O="Google, Inc", CN=Google Cloud SQL Server CA
Algorithm: RSA; Serial number: 0x0
Valid from Mon Jan 16 22:54:25 CET 2017 until Wed Jan 16 22:55:25 CET 2019
trigger seeding of SecureRandom
done seeding SecureRandom