Red Hat Training
A Red Hat training course is available for RHEL 8
9.2.5. MariaDB クライアントでの TLS 暗号化のグローバルな有効化
MariaDB サーバーが TLS 暗号化に対応している場合は、安全な接続のみを確立し、サーバー証明書を検証するようにクライアントを設定します。この手順では、サーバー上のすべてのユーザーで TLS サポートを有効にする方法を説明します。
9.2.5.1. デフォルトで TLS 暗号化を使用するように MariaDB クライアントを設定する
RHEL では、MariaDB クライアントが TLS 暗号化を使用するようにグローバルに設定でき、サーバー証明書の Common Name (CN) が、ユーザーが接続するホスト名と一致することを検証します。これにより、man-in-the-middle 攻撃 (中間者攻撃) を防ぎます。
前提条件
- MariaDB サーバーで TLS サポートが有効になっている。
- サーバー証明書を発行した認証局 (CA) が RHEL で信頼されていない場合は、CA 証明書がクライアントにコピーされています。
手順
RHEL が、サーバー証明書を発行した CA を信頼しない場合は、以下を行います。
CA 証明書を
/etc/pki/ca-trust/source/anchors/
ディレクトリーにコピーします。# cp <path>/ca.crt.pem /etc/pki/ca-trust/source/anchors/
すべてのユーザーが CA 証明書ファイルを読み取りできるようにするパーミッションを設定します。
# chmod 644 /etc/pki/ca-trust/source/anchors/ca.crt.pem
CA 信頼データベースを再構築します。
# update-ca-trust
以下の内容で
/etc/my.cnf.d/mariadb-client-tls.cnf
ファイルを作成します。[client-mariadb] ssl ssl-verify-server-cert
これらの設定は、MariaDB クライアントが TLS 暗号化 (
ssl
) を使用し、クライアントがホスト名をサーバー証明書 (ssl-verify-server-cert
) の CN と比較することを定義します。
検証
ホスト名を使用してサーバーに接続し、サーバーの状態を表示します。
# mysql -u root -p -h server.example.com -e status ... SSL: Cipher in use is TLS_AES_256_GCM_SHA384
SSL
エントリーにCipher in use is…
が含まれている場合、接続は暗号化されています。このコマンドで使用するユーザーには、リモートで認証するパーミッションがあることに注意してください。
接続するホスト名がサーバーの TLS 証明書のホスト名と一致しない場合、
ssl-verify-server-cert
パラメーターにより接続が失敗します。たとえば、localhost
に接続する場合は、以下のようになります。# mysql -u root -p -h localhost -e status ERROR 2026 (HY000): SSL connection error: Validation of SSL server certificate failed
関連情報
-
mysql(1)
man ページの--ssl*
パラメーターの説明。