Сгенерировать ключи
Я использую
/etc/mysql
для хранения сертификатов, потому что/etc/apparmor.d/usr.sbin.mysqld
содержит/etc/mysql/*.pem r
.sudo su - cd /etc/mysql openssl genrsa -out ca-key.pem 2048; openssl req -new -x509 -nodes -days 1000 -key ca-key.pem -out ca-cert.pem; openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem -out server-req.pem; openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem; openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem -out client-req.pem; openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem;
Добавить конфигурацию
/etc/mysql/my.cnf
blockquote>[client] ssl-ca=/etc/mysql/ca-cert.pem ssl-cert=/etc/mysql/client-cert.pem ssl-key=/etc/mysql/client-key.pem [mysqld] ssl-ca=/etc/mysql/ca-cert.pem ssl-cert=/etc/mysql/server-cert.pem ssl-key=/etc/mysql/server-key.pem
В моей настройке сервер ubuntu зарегистрировался на:
/var/log/mysql/error.log
Последующие примечания:
SSL error: Unable to get certificate from '...'
Mysql может быть отказано в доступе к чтению вашего файла сертификата, если он не находится в apparmors config . Как упоминалось в предыдущих шагах ^, сохраните все наши сертификаты в виде.pem
файлов в каталоге/etc/mysql/
, которые по умолчанию одобрены apparmor (или измените ваш apparmor / SELinux, чтобы разрешить доступ туда, где вы их сохранили.)SSL error: Unable to get private key
Версия вашего сервера mysql может не поддерживать формат по умолчаниюrsa:2048
. Covert сгенерировалrsa:2048
равнымrsa
с помощью:openssl rsa -in server-key.pem -out server-key.pem openssl rsa -in client-key.pem -out client-key.pem
- Проверьте, поддерживает ли локальный сервер ssl :
mysql -u root -p mysql> show variables like "%ssl%"; +---------------+----------------------------+ | Variable_name | Value | +---------------+----------------------------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | /etc/mysql/ca-cert.pem | | ssl_capath | | | ssl_cert | /etc/mysql/server-cert.pem | | ssl_cipher | | | ssl_key | /etc/mysql/server-key.pem | +---------------+----------------------------+
- Проверка соединения с db зашифрована ssl :
Проверка соединения
При входе в экземпляр MySQL вы можете выполнить запрос:Если ваше соединение не зашифровано, результат будет пустым:show status like 'Ssl_cipher';
В противном случае он отобразит ненулевую строку длины для используемого cypher:mysql> show status like 'Ssl_cipher'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Ssl_cipher | | +---------------+-------+ 1 row in set (0.00 sec)
mysql> show status like 'Ssl_cipher'; +---------------+--------------------+ | Variable_name | Value | +---------------+--------------------+ | Ssl_cipher | DHE-RSA-AES256-SHA | +---------------+--------------------+ 1 row in set (0.00 sec)
- Требовать ssl для подключения конкретного пользователя ('require ssl'): SSL Сообщает серверу разрешать только SSL-зашифрованные подключения для учетной записи.
Чтобы подключиться, клиент должен указать параметр -ssl-ca для проверки подлинности сертификата сервера и может дополнительно указать опции -ssl-key и -ssl-cert. Если не указан параметр --ssl-ca или опция -ssl-capath, клиент не проверяет подлинность сертификата сервера.GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost' REQUIRE SSL;
Альтернативная ссылка: Длительный учебник здесь http://www.madirish.net/214