RDSのMySQLインスタンスへの接続にSSL接続を使用することが出来ない
0
環境
MySQL 5.7.42
問題
クライアントからMySQLへ接続する際に、SSL証明書をクライアントに要求させたいが、出来ない。
MySQLの接続時に証明書の要求はされずに接続ができてしまう
> mysql -h {ホスト名} -u {ユーザー名} -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 26
Server version: 5.7.42-log Source distribution
期待する結果
- 証明書を前提とした接続を確立したい
- 証明書を指定しなかった場合、以下のエラーで返ること
> mysql -h {ホスト名} -u {ユーザー名} -p
MySQL Error 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON.
試したこと
1. require_secure_transport パラメータを設定
- こちらの方法を参考に当該パラメータを設定
- DBに接続し、設定値を確認
mysql> SHOW VARIABLES LIKE 'require_secure_transport';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| require_secure_transport | ON |
+--------------------------+-------+
- MySQLの接続時に証明書の要求はされずに接続ができてしまう
> mysql -h {ホスト名} -u {ユーザー名} -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 26
Server version: 5.7.42-log Source distribution
- sslオプションを付与してログインするも、証明書の検証をしないと表示
mysql --ssl-mode=REQUIRED --ssl-ca={path} -h {ホスト名} -u {ユーザー名} -p
WARNING: no verification of server certificate will be done. Use --ssl-mode=VERIFY_CA or VERIFY_IDENTITY.
2. 特定のユーザーにSSL接続を行うように権限を与える
- 特定のユーザーのログインの際に、SSL接続を行うように設定
GRANT USAGE ON *.* TO 'some-user'@'%' REQUIRE SSL;
Query OK, 0 rows affected (0.19 sec)
- 1と同様、sslオプションを付与せずともMySQLにログインできてしまう
3. MySQLインスタンス内でのssl関連の設定値の確認
mysql> SHOW VARIABLES LIKE '%ssl%';
+-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| have_openssl | YES |
| have_ssl | YES |
| performance_schema_show_processlist | OFF |
| ssl_ca | /rdsdbdata/rds-metadata/ca-cert.pem |
| ssl_capath | |
| ssl_cert | /rdsdbdata/rds-metadata/server-cert.pem |
| ssl_cipher | {ハッシュ値}
| ssl_crl | |
| ssl_crlpath | |
| ssl_key | /rdsdbdata/rds-metadata/server-key.pem |
+-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10 rows in set (0.21 sec)
1 個回答
- 最新
- 最多得票
- 最多評論
這些答案是否有幫助?支持正確答案,以幫助社區從您的知識中受益。
0
已接受的答案
ドキュメントを見るとデフォルトでSSL接続が有効になっているようです。
https://dev.mysql.com/doc/refman/8.0/ja/using-encrypted-connections.html
サーバー側では、--ssl オプションは、サーバーが暗号化された接続を許可するが必要としないことを指定します。 このオプションはデフォルトで有効になっているため、明示的に指定する必要はありません。
試しに接続コマンドに「--ssl-mode=DISABLED」を付けて実行してみてください。
このオプションはSSL接続を使用しないで接続するためのオプションです。
RDS側でrequire_secure_transportが有効になっていれば接続に失敗するはずです。
mysql -h {ホスト名} -u {ユーザー名} -p --ssl-mode=DISABLED
証明書の検証を行う場合は「--ssl-mode=VERIFY_CA」というオプションになると思います。
相關內容
- 已提問 10 個月前lg...
- 已提問 10 個月前lg...
- 已提問 1 年前lg...
- 已提問 10 個月前lg...
- AWS 官方已更新 3 年前
- AWS 官方已更新 10 個月前