3.5. MySQL クライアントで CA 証明書の検証を使用して TLS 暗号化をグローバルで有効にする
MySQL サーバーが TLS 暗号化に対応している場合は、安全な接続のみを確立し、サーバー証明書を検証するようにクライアントを設定します。この手順では、サーバー上のすべてのユーザーで TLS サポートを有効にする方法を説明します。
3.5.1. デフォルトで TLS 暗号化を使用するように MySQL クライアントを設定する リンクのコピーリンクがクリップボードにコピーされました!
RHEL では、MySQL クライアントが TLS 暗号化を使用するようにグローバルに設定でき、サーバー証明書の Common Name (CN) が、ユーザーが接続するホスト名と一致することを検証します。これにより、man-in-the-middle 攻撃 (中間者攻撃) を防ぎます。
前提条件
- MySQL サーバーで TLS サポートが有効になっている。
-
CA 証明書は、クライアントの
/etc/pki/tls/certs/ca.crt.pemファイルに保存されます。
手順
以下の内容で
/etc/my.cnf.d/mysql-client-tls.cnfファイルを作成します。[client] ssl-mode=VERIFY_IDENTITY ssl-ca=/etc/pki/tls/certs/ca.crt.pem
[client] ssl-mode=VERIFY_IDENTITY ssl-ca=/etc/pki/tls/certs/ca.crt.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらの設定は、MySQL クライアントが TLS 暗号化を使用すること、およびクライアントがホスト名をサーバー証明書の CN と比較すること (
ssl-mode=VERIFY_IDENTITY) を定義します。さらに、CA 証明書 (ssl-ca) へのパスも指定します。
検証
ホスト名を使用してサーバーに接続し、サーバーの状態を表示します。
mysql -u root -p -h server.example.com -e status
# mysql -u root -p -h server.example.com -e status ... SSL: Cipher in use is TLS_AES_256_GCM_SHA384Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSLエントリーにCipher in use is…が含まれている場合、接続は暗号化されています。このコマンドで使用するユーザーには、リモートで認証するパーミッションがあることに注意してください。
接続するホスト名がサーバーの TLS 証明書のホスト名と一致しない場合、
ssl-mode=VERIFY_IDENTITYパラメーターにより接続が失敗します。たとえば、localhostに接続する場合は、以下のようになります。mysql -u root -p -h localhost -e status
# mysql -u root -p -h localhost -e status ERROR 2026 (HY000): SSL connection error: error:0A000086:SSL routines::certificate verify failedCopy to Clipboard Copied! Toggle word wrap Toggle overflow