Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да активирате SSL/TLS за MySQL в Ubuntu

MySQL позволява на потребителите да се свързват сигурно с бази данни, използвайки SSL/TLS сертификати. В тази статия ще разгледаме MySQL SSL конфигурация – как да активирате SSL/TLS за MySQL в Ubuntu.


Как да активирам SSL/TLS за MySQL

Ето стъпките за настройка на SSL връзки в MySQL.


1. Инсталирайте MySQL

Отворете терминала и изпълнете следните команди, за да инсталирате MySQL.

$ sudo apt-get update
$ sudo apt-get install mysql-client

Бонус четене:MySQL промяна на колекцията на всички таблици


2. Проверете състоянието на SSL

Влезте в MySQL като root

$ mysql -uroot -p

Ще бъдете подканени за root парола. След като влезете, въведете следната команда, за да намерите текущото състояние на SSL/TLS

mysql> SHOW VARIABLES LIKE '%ssl%';
+---------------+----------+
| Variable_name | Value    |
+---------------+----------+
| have_openssl  | DISABLED |
| have_ssl      | DISABLED |
| ssl_ca        |          |
| ssl_capath    |          |
| ssl_cert      |          |
| ssl_cipher    |          |
| ssl_crl       |          |
| ssl_crlpath   |          |
| ssl_key       |          |
+---------------+----------+

Ще откриете, че have_openssl и have_ssl и двете имат стойност DISABLED. Това означава, че SSL не е активиран в MySQL.

Бонус за четене:Топ блогове за база данни, които да следвате


3. Генериране на SSL/TLS сертификати

След това трябва да генерираме SSL/TLS сертификати и да насочим MySQL сървъра към техните местоположения. Обикновено хората използват openssl за генериране на SSL сертификати и след това ги преместват в /var/lib/mysql, което е местоположението по подразбиране на SSL файловете за MySQL сървъра.

Въпреки това, MySQL 5.7 и по-нови версии вече се доставят с помощна програма mysql_ssl_rsa_setup за опростяване на този процес. Той генерира SSL сертификати и ги съхранява в /var/lib/mysql.

Тъй като се нуждаем от mysql процес, за да можем да четем тези файлове, ще направим mysql като собственик на тези файлове, както е показано по-долу.

Изпълнете следната команда, за да генерирате SSL сертификати

$ sudo mysql_ssl_rsa_setup --uid=mysql

Generating a 2048 bit RSA private key ...................................+++ .....+++ 
writing new private key to 'ca-key.pem' 
----- 
Generating a 2048 bit RSA private key ......+++ .................................+++ 
writing new private key to 'server-key.pem' 
----- 
Generating a 2048 bit RSA private key ......................................................+++ .................................................................................+++ 
writing new private key to 'client-key.pem' 
-----

Можете да проверите генерираните файлове, като изпълните следната команда

$ ls -all /var/lib/mysql/*.pem

Ще видите нещо като следното

256740      4 -rw-r--r--   1 mysql    mysql        1078 May 1 12:24 /var/lib/mysql/server-cert.pem
   256735      4 -rw-------   1 mysql    mysql        1675 May 1 12:24 /var/lib/mysqlsql/ca-key.pem
   256739      4 -rw-r--r--   1 mysql    mysql         451 May 1 12:24 /var/lib/mysqlsql/public_key.pem
   256741      4 -rw-------   1 mysql    mysql        1689 May 1 12:24 /var/lib/mysqlsql/client-key.pem
   256737      4 -rw-r--r--   1 mysql    mysql        1064 May 1 12:24 /var/lib/mysqlsql/ca.pem
   256743      4 -rw-r--r--   1 mysql    mysql        1048 May 1 12:24 /var/lib/mysqlsql/client-cert.pem
   256736      4 -rw-------   1 mysql    mysql        1625 May 1 12:24 /var/lib/mysqlsql/private_key.pem
   256738      4 -rw-------   1 mysql    mysql        1615 May 1 12:24 /var/lib/mysqlsql/server-key.pem

Това са SSL сертификат файл и двойки частни ключове за сертифициращ орган, MySQL сървър и MySQL клиент.

Бонус за четене:Топ алтернативи на MySQL Workbench


4. Активирайте SSL връзките в MySQL сървър

След това рестартирайте MySQL Server, за да активирате SSL/TLS в MySQL.

$ sudo systemctl restart mysql 

MySQL Server автоматично ще търси файлове за SSL сертификат в /var/lib/mysql, когато стартира. Така че не е нужно ръчно да указвате местоположението им в конфигурационния файл на MySQL.

Бонус четене:Как да активирате MySQL Query Cache


5. Проверете SSL връзката

Влезте в MySQL както преди (стъпка 2) и изпълнете следната команда.

SHOW VARIABLES LIKE '%ssl%';
Output
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| have_openssl  | YES             |
| have_ssl      | YES             |
| ssl_ca        | ca.pem          |
| ssl_capath    |                 |
| ssl_cert      | server-cert.pem |
| ssl_cipher    |                 |
| ssl_crl       |                 |
| ssl_crlpath   |                 |
| ssl_key       | server-key.pem  |
+---------------+-----------------+

Сега ще намерите have_openssl и have_ssl променливите са ДА. Ще видите също, че ssl_ca , ssl_cert и ssl_key се попълват с подходящи стойности.

Можете също да проверите подробностите за връзката си.

mysql> \s

-------------- 
. . . 
SSL: Cipher in use is DHE-RSA-AES256-SHA 
. . . 
Connection: 127.0.0.1 via TCP/IP 
. . . 
--------------


6. Конфигурирайте SSL за отдалечена връзка (По избор)

Ако вашият MySQL сървър има отдалечени входящи връзки, тогава можете да активирате SSL за отдалечена връзка и дори да го направите задължително, като промените конфигурационния файл на MySQL сървъра.

Отворете терминала и изпълнете следната команда, за да отворите конфигурацията на MySQL.

$ sudo vi /etc/mysql/my.cnf

Добавете [mysqld] блок от код, както е показано, под двата оператора !includedir.

!includedir /etc/mysql/conf.d/ 
!includedir /etc/mysql/mysql.conf.d/ 

[mysqld] 
# Require clients to connect either using SSL 
# or through a local socket file 
require_secure_transport = ON
bind-address = 0.0.0.0

В последния ред сме задали bind-address на 0.0.0.0, за да позволим отдалечени връзки. Не е необходимо да го добавяте, ако вече сте активирали отдалечени връзки.

Рестартирайте MySQL Server, за да приложите промените. Отсега нататък MySQL ще изисква SSL.

За отдалечени връзки, моля, не забравяйте да отворите порт 443, вместо 3306 по подразбиране. Това е така, защото SSL връзките се осъществяват през порт 443, а не 3306.

Надяваме се, че тази статия ще ви помогне да активирате SSL/TLS връзка в MySQL.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Странно дублирано поведение от GROUP_CONCAT на две LEFT JOIN от GROUP_BY

  2. Грешка в WordPress MySQL SQL заявка в клас WPDB

  3. Моите MySQL сървърни връзки криптирани и безопасни ли са?

  4. MySQL - Използване на COUNT(*) в клаузата WHERE

  5. Грешка при използване освен в заявка