MySQL 8.0 : SSL/TLS Setting2024/09/03 |
Configure SSL/TLS Setting on MySQL. |
|
[1] | On MySQL server side, mysqld generates self signed certificates by default, so it's possible to connect to mysqld with SSL/TLS session by default. |
# mysqld generates them root@dlp:~ # ls -l /var/db/mysql/*.pem -rw------- 1 mysql mysql uarch 1705 Sep 3 12:36 /var/db/mysql/ca-key.pem -rw-r--r-- 1 mysql mysql uarch 1112 Sep 3 12:36 /var/db/mysql/ca.pem -rw-r--r-- 1 mysql mysql uarch 1112 Sep 3 12:36 /var/db/mysql/client-cert.pem -rw------- 1 mysql mysql uarch 1709 Sep 3 12:36 /var/db/mysql/client-key.pem -rw------- 1 mysql mysql uarch 1705 Sep 3 12:36 /var/db/mysql/private_key.pem -rw-r--r-- 1 mysql mysql uarch 452 Sep 3 12:36 /var/db/mysql/public_key.pem -rw-r--r-- 1 mysql mysql uarch 1112 Sep 3 12:36 /var/db/mysql/server-cert.pem -rw------- 1 mysql mysql uarch 1705 Sep 3 12:36 /var/db/mysql/server-key.pemroot@dlp:~ # mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.35 Source distribution Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. # SSL is enabled root@localhost [(none)]> show variables like '%ssl%'; +-------------------------------------+-----------------+ | Variable_name | Value | +-------------------------------------+-----------------+ | admin_ssl_ca | | | admin_ssl_capath | | | admin_ssl_cert | | | admin_ssl_cipher | | | admin_ssl_crl | | | admin_ssl_crlpath | | | admin_ssl_key | | | have_openssl | YES | | have_ssl | YES | | mysqlx_ssl_ca | | | mysqlx_ssl_capath | | | mysqlx_ssl_cert | | | mysqlx_ssl_cipher | | | mysqlx_ssl_crl | | | mysqlx_ssl_crlpath | | | mysqlx_ssl_key | | | performance_schema_show_processlist | OFF | | ssl_ca | ca.pem | | ssl_capath | | | ssl_cert | server-cert.pem | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_fips_mode | OFF | | ssl_key | server-key.pem | | ssl_session_cache_mode | ON | | ssl_session_cache_timeout | 300 | +-------------------------------------+-----------------+ 27 rows in set (0.00 sec) # certificates mysqld generated are 10 years available root@localhost [(none)]> show status like 'Ssl_server_not%'; +-----------------------+--------------------------+ | Variable_name | Value | +-----------------------+--------------------------+ | Ssl_server_not_after | Sep 1 03:36:19 2034 GMT | | Ssl_server_not_before | Sep 3 03:36:19 2024 GMT | +-----------------------+--------------------------+ 2 rows in set (0.00 sec) |
[2] | To force require users to connect with SSL/TLS, set like follows. |
root@dlp:~ # mysql Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 8.0.35 Source distribution Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. # create a user who is required SSL/TLS root@localhost [(none)]> create user freebsd identified by 'password' require ssl; Query OK, 0 rows affected (0.01 sec) # show status SSL/TLS required users set [ssl_type] [ANY] root@localhost [(none)]> select user,host,ssl_type,plugin from mysql.user; +------------------+-----------+----------+-----------------------+ | user | host | ssl_type | plugin | +------------------+-----------+----------+-----------------------+ | freebsd | % | ANY | caching_sha2_password | | openbsd | % | | caching_sha2_password | | mysql.infoschema | localhost | | caching_sha2_password | | mysql.session | localhost | | caching_sha2_password | | mysql.sys | localhost | | caching_sha2_password | | root | localhost | | caching_sha2_password | +------------------+-----------+----------+-----------------------+ 6 rows in set (0.00 sec) # set SSL/TLS required to an existing user root@localhost [(none)]> alter user 'openbsd'@'%' require ssl; Query OK, 0 rows affected (0.01 sec) root@localhost [(none)]> select user,host,ssl_type,plugin from mysql.user; +------------------+-----------+----------+-----------------------+ | user | host | ssl_type | plugin | +------------------+-----------+----------+-----------------------+ | freebsd | % | ANY | caching_sha2_password | | openbsd | % | ANY | caching_sha2_password | | mysql.infoschema | localhost | | caching_sha2_password | | mysql.session | localhost | | caching_sha2_password | | mysql.sys | localhost | | caching_sha2_password | | root | localhost | | caching_sha2_password | +------------------+-----------+----------+-----------------------+ 6 rows in set (0.00 sec) |
[3] | To connect via TCP, SSL/TLS is enabled automatically. |
root@dlp:~ # mysql -u freebsd -p --protocol=tcp Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 Server version: 8.0.35 Source distribution Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. # show status freebsd@localhost [(none)]> show status like 'ssl_cipher'; +---------------+------------------------+ | Variable_name | Value | +---------------+------------------------+ | Ssl_cipher | TLS_AES_256_GCM_SHA384 | +---------------+------------------------+ 1 row in set (0.00 sec) freebsd@localhost [(none)]> exit Bye |
Sponsored Link |