2017-05-19 9 views
0

私はクラウドでMySQLを使用してプロジェクトを開始しました.MySQLコマンドラインクライアント用にSSL接続を設定する必要があります。MySQLコマンドラインクライアント暗号化接続のSSLキーの生成

私はca.pemファイルを、そこに多数の証明書を持っているMySQLサーバから受け取りました。

私はすでに、MySQL WorkbenchとJavaでSSL接続をソートしました。私は今Javaのインストールのcacertsの信頼ストアにあるすべての証明書を持っています。私はclient.jksストアで私の公開/非公開のSSL鍵を見つけるためにJavaとWorkbenchを設定しました。

しかし、コマンドラインのMySQLクライアントに役立つものはありません。

mysql --ssl-ca=ca.pem \ 
    --ssl-cert=client-cert.pem \ 
    --ssl-key=client-key.pem 

及びこれらのparamsは、コマンドラインを容易にするためmy.cnfに入れることができます:MySQLのドキュメントConfiguring MySQL to use Secure Connectionsによると、これはそれを起動する方法です。

これは、私が知る必要があったことのいくつかを教えてくれました。MySQL on Amazon RDSつまり、サーバー証明書のコマンドラインにmysqlを指す方法。これは簡単でした。Javaの手順では、最初の証明書だけを読み取って残りの部分を黙って無視するコマンドラインツールを使用して、Java証明書ストアにロット全体をインポートする必要があったためです。

Javaを使っていて、初めから公開鍵/秘密鍵のペアがsshの場合は、私のすべての鍵をまとめておき、実際には同じ鍵を再使用することが賢明でしょう。私が必要とする他のフォーマットを作成してください。

Converting a Java Keystore into PEM Formatによれば、私はこれを行うことができますか、代わりにSSHキーを使用する必要がありますか?それらはすべて同じ国/州/地方/団体/ユニット/名前/電子メールを共有します。

MySQLのドキュメントCreating SSL Certificates and Keys Using OpenSSLは、私がこれを行う必要があると言う:

openssl req -newkey rsa:2048 -days 3600 \ 
    -nodes -keyout client-key.pem -out client-req.pem 
openssl rsa -in client-key.pem -out client-key.pem 
openssl x509 -req -in client-req.pem -days 3600 \ 
    -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem 
openssl verify -CAfile ca.pem server-cert.pem client-cert.pem 

私はAWS証明書を生成しませんでしたし、私はそこから1つのPEMファイルを得たので、これは問題です。たぶん、AWS ca.pemとserver-cert.pemの両方が1つのpemファイルにあります。私が確認できると思うかもしれませんが、どのCA認証機関が使用する情報を調べてCA証明書を認識できるか調べなければなりません。そして私は 'server-cert'が私が持っている実際のホストからの公開鍵だと思います。

しかし、それは動作しませんが、私は次のエラーを取得する:

$ openssl.exe x509 -req -in client-req.pem -days 3600 
     -CA rds-combined-ca-bundle.pem -CAkey rds-combined-ca-bundle.pem 
     -set_serial 01 -out client-cert.pem 
Signature ok 
subject=/C=UK/ST=LN/L=LN/O=X/OU=XYZ/CN=xyz/[email protected] 
Getting CA Private Key 
unable to load CA Private Key 
4294956672:error:0906D06C:PEM routines:PEM_read_bio:no start 
     line:pem_lib.c:707:Expecting: ANY PRIVATE KEY 

答えて

0

は、SSL証明書が赤ニシンですが判明します。あなたはそれらを必要としません。必要なのはこれです:

mysql -h myinstance.c9akciq32.rds-us-east-1.amazonaws.com 
    --ssl-ca=[full path]rds-combined-ca-bundle.pem --ssl-verify-server-cert 

それはCygwinのだと、Windows標準のMySQLクライアントは、一緒にうまく起動しようとしているので、ぶら下がりプレイしない:connecting to mysql from cygwin

関連する問題