2017-01-22 5 views
1

から私は、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 

答えて

3

問題が発生したストアが正しくないということでした。

正しい方法: まずGoogle Cloud SQL証明書とローカルのcacertsファイルをフォルダに入れます。

は、私はtrust-とキーストアを生成するには、次のスクリプトを使用:

rm generated/* 

cp cacerts generated/truststore 

# Add Server certificate to truststore: 
keytool -import -file server-ca.pem -alias mysqlServerCACert -keystore generated/truststore 
# Change password: 
keytool -storepasswd -keystore generated/truststore 

# Convert key 
winpty openssl pkcs12 -export -inkey client-key.pem -in client-cert.pem -name my-key -out generated/client.p12 
# Import converted client certificate: 
keytool -importkeystore -srckeystore generated/client.p12 -srcstoretype pkcs12 -destkeystore generated/keystore 

トラストストアとキーストアは、「生成」-folderに生成されます。

関連する問題