自己署名SSL証明書を作成した後、それらを使用するようにリモートMySQLサーバーを構成しました(SSLが有効になっています)
リモートサーバーにSSH接続し、SSLを使用して独自のmysqldに接続してみます(MySQLサーバーは5.5.25です)。
mysql -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key --ssl-ca=ca.cert
Enter password:
ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1)
OK、SSL経由で同じサーバーに接続する際に問題があることを読んだことを覚えています。そこで、ローカルキーにクライアントキーをダウンロードし、そこからテストします...
mysql -h <server> -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key --ssl-ca=ca.cert
Enter password:
ERROR 2026 (HY000): SSL connection error
この「SSL接続エラー」エラーが何を指しているのかはわかりませんが、を省略すると-ssl-ca
、SSLを使用して接続できます。
mysql -h <server> -u <user> -p --ssl=1 --ssl-cert=client.cert --ssl-key=client.key
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 37
Server version: 5.5.25 MySQL Community Server (GPL)
ただし、これは接続の暗号化のみであり、実際に証明書の有効性を検証するものではないと考えています(つまり、中間者攻撃に対して潜在的に脆弱であることを意味します)
SSL証明書は有効であり(自己署名ではありますが)、パスフレーズはありません。だから私の質問は、私が間違っているのは何ですか?自己署名証明書を使用して、SSL経由で接続するにはどうすればよいですか?
MySQLサーバーのバージョンは5.5.25で、サーバーとクライアントはCentOS 5です。
アドバイスをありがとう
編集:すべての場合において、コマンドはsslキーが存在する同じディレクトリから発行されていることに注意してください(したがって絶対パスはありません)
編集(mgorvenへの応答):
ca.cert
は認証局の証明書で、mysqlに認証局が信頼されていることを伝えることになっています。
からの設定my.cnf
は
[mysqld]
ssl-ca=/etc/ssl/mysql/ca.cert
ssl-cert=/etc/ssl/mysql/server.cert
ssl-key=/etc/ssl/mysql/server.key
追加も試みましssl-cipher=DHE-RSA-AES256-SHA
たが、役に立たなかったため削除しました。
ca.cert
?サーバーの自己署名証明書ですか?認証にクライアント証明書を使用していますか?サーバーにSSL関連の構成を提供してください。