Datetime - Получить следующий вторник

Сгенерировать ключи

Я использую /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

[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
blockquote>

В моей настройке сервер 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'; 
    
    Если ваше соединение не зашифровано, результат будет пустым:
    mysql> show status like 'Ssl_cipher'; 
    +---------------+-------+ 
    | Variable_name | Value | 
    +---------------+-------+ 
    | Ssl_cipher    |       |  
    +---------------+-------+ 
    1 row in set (0.00 sec) 
    
    В противном случае он отобразит ненулевую строку длины для используемого cypher:
    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-зашифрованные подключения для учетной записи.
    GRANT ALL PRIVILEGES ON test.* TO 'root'@'localhost'
      REQUIRE SSL;
    
    Чтобы подключиться, клиент должен указать параметр -ssl-ca для проверки подлинности сертификата сервера и может дополнительно указать опции -ssl-key и -ssl-cert. Если не указан параметр --ssl-ca или опция -ssl-capath, клиент не проверяет подлинность сертификата сервера.

Альтернативная ссылка: Длительный учебник здесь http://www.madirish.net/214

140
задан SteveC 30 October 2015 в 17:09
поделиться