私はクラウドで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