web-dev-qa-db-ja.com

MariaDBユーザーにSSLを強制することは不可能ですか?

まず第一に、私の英語は本当に悪いので、私の英語の間違いをごめんなさい。 MariaDB 10.2.15を持っています。 SSLをインストールしましたが、正常に動作しましたが、ユーザーにSSLを強制的に使用することはできません。

my.cnf:

[mysqld]
ssl
ssl-ca=/etc/mariadb/ssl/ca.pem
ssl-cert=/etc/mariadb/ssl/server-cert.pem
ssl-key=/etc/mariadb/ssl/server-key.pem
ssl-cipher = AES128+EECDH:AES128+EDH

ssl変数:

+---------------------+----------------------------------+
| Variable_name       | Value                            |
+---------------------+----------------------------------+
| have_openssl        | YES                              |
| have_ssl            | YES                              |
| ssl_ca              | /etc/mariadb/ssl/ca.pem          |
| ssl_capath          |                                  |
| ssl_cert            | /etc/mariadb/ssl/server-cert.pem |
| ssl_cipher          | AES128+EECDH:AES128+EDH          |
| ssl_crl             |                                  |
| ssl_crlpath         |                                  |
| ssl_key             | /etc/mariadb/ssl/server-key.pem  |
| version_ssl_library | OpenSSL 1.0.1e-fips 11 Feb 2013  |
+---------------------+----------------------------------+

私はこの変数を見つけました:

require_secure_transport

そして私はこれも見つけました:

クライアントからサーバーへの接続を安全にする必要があるかどうかを決定するMySQLのみの変数。

それで、私は他に何ができますか?原因は、ユーザーがSSLなしで接続できることです。無理せずに本当に不要な気がします。

[〜#〜] update [〜#〜]for clear:SHOW GRANTS:

GRANT ALL PRIVILEGES ON *.* TO 'denes'@'%' IDENTIFIED BY PASSWORD '*SOMETHINGPASSWORD' REQUIRE SSL WITH GRANT OPTION

Login Panel - HeidiSQL

SSL Turned off as u can see

そして、私はまだTCP SSLなしでMariaDBにログインできます

3
G3ph4z

REQUIRE SSLユーザーに付与するオプションが必要です。意図したとおりに機能します:

MariaDB [(none)]> CREATE USER testssl@localhost;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> GRANT USAGE ON *.* TO testssl@localhost REQUIRE SSL;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> Bye

$ Sudo mysql -u testssl --ssl
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.3.7-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show grants;
+---------------------------------------------------------+
| Grants for testssl@localhost                            |
+---------------------------------------------------------+
| GRANT USAGE ON *.* TO 'testssl'@'localhost' REQUIRE SSL |
+---------------------------------------------------------+
1 row in set (0.000 sec)

MariaDB [(none)]> Bye

$ Sudo mysql -u testssl --skip-ssl
ERROR 1045 (28000): Access denied for user 'testssl'@'localhost' (using password: NO)

$ grep ssl /etc/my.cnf
ssl-ca = /etc/mysql/ca.pem # [client]
ssl-cert = /etc/mysql/client-cert.pem
ssl-key = /etc/mysql/client-key.pem
ssl-ca = /etc/mysql/ca.pem # [server]
ssl-cert = /etc/mysql/server-cert.pem
ssl-key = /etc/mysql/server-key.pem

ワークベンチがSSLでどのように機能するかを確認できますが、SSLを使用しないように強制すると接続に失敗します。

WorksDoesn't work

require_secure_transportはMySQL 5.7以降のみであり、TLSの強制と関係がありますが、暗号化されていない安全なローカル接続も考慮します。

3
jynus