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)
gefragt vor 5 Monaten1060 Aufrufe
1 Antwort
0
Akzeptierte Antwort

ドキュメントを見るとデフォルトで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」というオプションになると思います。

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen