MariaDB является бесплатной базой данных с открытым исходным кодом и является наиболее широко используемой заменой MySQL. Он сделан разработчиками MySQL и предназначен для бесплатного использования под GNU GPL. Это очень быстрый, масштабируемый и поставляется с богатым набором функций, которые делают его очень универсальным для широкого спектра вариантов использования.
Из этого туториала Вы узнаете, как установить и настроить MariaDB с поддержкой SSL в Ubuntu 16.04.
Требования
- Свежий экземпляр Ubuntu 16.04 Vultr.
- Пользователь без полномочий root с правами sudo.
- На экземпляре сервера настроен статический IP-адрес 192.168.0.190.
- На клиентском компьютере настроен статический IP-адрес 192.168.0.191.
Шаг 1: Установите MariaDB
По умолчанию последняя версия MariaDB недоступна в репозитории Ubuntu 16.04; поэтому вам нужно будет добавить репозиторий MariaDB в вашу систему.
Сначала загрузите ключ с помощью следующей команды:
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Затем добавьте репозиторий MariaDB в /etc/apt/sources.list
файл:
sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list
Обновите индекс apt с помощью следующей команды:
sudo apt-get update -y
После обновления индекса apt установите сервер MariaDB с помощью следующей команды:
sudo apt-get install mariadb-server -y
Запустите сервер MariaDB и включите его во время загрузки:
sudo systemctl start mysql
sudo systemctl enable mysql
Далее вам нужно будет запустить mysql_secure_installation
скрипт для безопасной установки MariaDB. Этот скрипт позволяет установить пароль пользователя root, удалить анонимных пользователей, запретить удаленный вход в систему root и удалить тестовую базу данных:
sudo mysql_secure_installation
Шаг 2. Создайте сертификат SSL и закрытый ключ для сервера
Сначала создайте каталог для хранения всех файлов ключей и сертификатов.
sudo mkdir /etc/mysql-ssl
Затем измените каталог /etc/mysql-ssl
и создайте сертификат CA и закрытый ключ с помощью следующей команды:
sudo cd /etc/mysql-ssl
sudo openssl genrsa 2048 > ca-key.pem
sudo openssl req -new -x509 -nodes -days 365000 -key ca-key.pem -out ca-cert.pem
Ответьте на все вопросы, как показано ниже:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:IN
State or Province Name (full name) [Some-State]:GUJ
Locality Name (eg, city) []:JND
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ENJ
Organizational Unit Name (eg, section) []:SYSTEM
Common Name (e.g. server FQDN or YOUR name) []:HITESH
Email Address []:[email protected]
Затем создайте закрытый ключ для сервера с помощью следующей команды:
sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout server-key.pem -out server-req.pem
Ответьте на все вопросы, как вы делали в предыдущей команде.
Затем экспортируйте закрытый ключ сервера в ключ типа RSA с помощью следующей команды:
sudo sudo openssl rsa -in server-key.pem -out server-key.pem
Наконец, сгенерируйте сертификат сервера, используя сертификат CA следующим образом:
sudo openssl x509 -req -in server-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
Теперь вы можете увидеть все сертификаты и ключ с помощью следующей команды:
ls
Вы должны увидеть следующий вывод:
ca-cert.pem ca-key.pem server-cert.pem server-key.pem server-req.pem
Как только вы закончите, вы можете перейти к следующему шагу.
Вы должны иметь все сертификаты и закрытый ключ; и теперь вам нужно будет настроить MariaDB для использования ключа и сертификатов. Вы можете сделать это, отредактировав /etc/mysql/mariadb.conf.d/50-server.cnf
файл:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Добавьте следующие строки под [mysqld]
разделом:
ssl-ca=/etc/mysql-ssl/ca-cert.pem
ssl-cert=/etc/mysql-ssl/server-cert.pem
ssl-key=/etc/mysql-ssl/server-key.pem
##Change this value to connect the MariaDB server from another host.
bind-address = *
Сохраните файл, затем перезапустите сервис MariaDB, чтобы применить эти изменения:
sudo systemctl restart mysql
Теперь вы можете проверить, работает ли конфигурация SSL, с помощью следующего запроса:
mysql -u root -p
MariaDB [(none)]> SHOW VARIABLES LIKE '%ssl%';
Если конфигурация прошла успешно, вы должны увидеть следующий вывод:
+---------------+--------------------------------+
| Variable_name | Value |
+---------------+--------------------------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | /etc/mysql-ssl/ca-cert.pem |
| ssl_capath | |
| ssl_cert | /etc/mysql-ssl/server-cert.pem |
| ssl_cipher | |
| ssl_crl | |
| ssl_crlpath | |
| ssl_key | /etc/mysql-ssl/server-key.pem |
+---------------+--------------------------------+
Вы должны замечать have_ssl
и have_openssl
значения включены в выводе выше.
Шаг 4. Создание пользователя с привилегиями SSL
Создайте удаленного пользователя, который имеет право доступа к серверу MariaDB через SSL. Сделайте это, выполнив следующую команду:
Сначала войдите в оболочку MySQL:
mysql -u root -p
Затем создайте пользователя remote
и предоставьте привилегию для доступа к серверу по SSL.
MariaDB [(none)]>GRANT ALL PRIVILEGES ON *.* TO 'remote'@'192.168.0.191' IDENTIFIED BY 'password' REQUIRE SSL;
Затем удалите привилегии с помощью следующей команды:
MariaDB [(none)]>FLUSH PRIVILEGES;
Наконец, выйдите из оболочки MySQL с помощью следующей команды:
MariaDB [(none)]>exit;
Примечание. 192.168.0.191 - это IP-адрес компьютера удаленного пользователя (клиента).
Теперь ваш сервер готов разрешить подключения к удаленному пользователю.
Шаг 5: Создайте сертификат клиента
Ваша конфигурация на стороне сервера завершена. Далее вам нужно будет создать новый ключ и сертификат для клиента.
На компьютере сервера создайте клиентский ключ с помощью следующей команды:
sudo cd /etc/mysql-ssl
sudo sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout client-key.pem -out client-req.pem
Затем обработайте клиентский ключ RSA следующей командой:
sudo openssl rsa -in client-key.pem -out client-key.pem
Наконец, подпишите сертификат клиента с помощью следующей команды:
sudo openssl x509 -req -in client-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
Все сертификаты и ключ готовы для клиента. Затем вам нужно будет скопировать все клиентские сертификаты на любой клиентский компьютер, на котором вы хотите запустить клиент MariaDB.
Вам нужно будет установить клиент MariaDB на клиентском компьютере.
Сначала на клиентском компьютере загрузите ключ для MariaDB с помощью следующей команды:
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Затем добавьте репозиторий MariaDB в /etc/apt/sources.list
файл:
sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list
Затем обновите индекс apt с помощью следующей команды:
sudo apt-get update -y
После обновления индекса apt установите клиент MariaDB на клиентском компьютере с помощью следующей команды:
sudo apt-get install mariadb-client -y
Теперь создайте каталог для хранения всех сертификатов:
sudo mkdir /etc/mysql-ssl
Затем скопируйте все клиентские сертификаты с серверного компьютера на клиентский компьютер с помощью следующей команды:
sudo scp [email protected]:/etc/mysql-ssl/client-* /etc/mysql-ssl/
Затем вам нужно будет настроить клиент MariaDB для использования SSL. Вы можете сделать это, создав /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf
файл:
sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf
Добавьте следующие строки:
[client]
ssl-ca=/etc/mysql-ssl/ca-cert.pem
ssl-cert=/etc/mysql-ssl/client-cert.pem
ssl-key=/etc/mysql-ssl/client-key.pem
Сохраните файл, когда вы закончите.
Шаг 7. Проверка удаленных подключений
Теперь, когда все настроено, пришло время проверить, можете ли вы успешно подключиться к серверу MariaDB или нет.
На клиентском компьютере выполните следующую команду для подключения к серверу MariaDB:
mysql -u remote -h 192.168.0.190 -p mysql
Вам будет предложено ввести remote
пароль пользователя. После ввода пароля вы будете авторизованы на удаленном сервере MariaDB.
Проверьте состояние соединения с помощью следующей команды:
MariaDB [mysql]> status
Вы должны увидеть следующий вывод:
--------------
mysql Ver 15.1 Distrib 10.2.7-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Connection id: 62
Current database: mysql
Current user: [email protected]
SSL: Cipher in use is DHE-RSA-AES256-SHA
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server: MariaDB
Server version: 10.0.31-MariaDB-0ubuntu0.16.04.2 Ubuntu 16.04
Protocol version: 10
Connection: 192.168.0.190 via TCP/IP
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 1 hours 31 min 31 sec
Вы должны увидеть SSL: Cipher in use is DHE-RSA-AES256-SHA
в выводе выше. Это означает, что ваше соединение теперь защищено с помощью SSL.
Вывод
Поздравляем! Вы успешно настроили сервер MariaDB с поддержкой SSL. Теперь вы можете предоставить доступ другим клиентам для доступа к серверу MariaDB через SSL.