Я пытался найти ответ на этот вопрос, но так и не нашел.
У меня есть сертификат от LetsEncrypt, который я использую для всех своих нужд SSL. Он действителен для всех DNS-имен, которые я пытаюсь использовать. Сегодня я пытался заставить его работать для MySQL, но MySQL настаивает на использовании собственного самоподписанного сертификата.
Версия MySQL — 8.0.26-0ubuntu0.20.04.2 из пакетов Ubuntu.
Я создал /etc/mysql/mysql.conf.d/zz-ssl.conf со следующим содержимым:
[mysqld]
ssl-ca=/etc/ssl/certs/local/mainchain.pem
ssl-cert=/etc/mysql/cert.pem
ssl-key=/etc/mysql/cert.pem
[system_default_sect]
MinProtocol = TLSv1.2
Но в журнале записано следующее:
2021-08-08T16:16:57.982003Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1 is enabled for channel mysql_main
2021-08-08T16:16:57.982227Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1.1 is enabled for channel mysql_main
2021-08-08T16:16:57.983344Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
Я пробовал удалить /var/lib/mysql/*.pem ... но когда я перезапускаю mysql, все эти файлы возвращаются с обновленными временными метками. MySQL, похоже, решил использовать свой собственный самоподписанный сертификат, а не тот, который я настроил. Думаю, я упускаю что-то, что должно быть очевидным, но не является таковым.
Файл /etc/mysql/cert.pem, на который ссылается моя конфигурация, принадлежит mysql:mysql и имеет разрешения 0600. Это копия файла сертификата, который я использую для всего остального, он содержит сертификат сервера, закрытый ключ и сертификат выдачи LetsEncrypt.
решение1
Я наконец-то понял это. Файлы конфигурации должны иметь расширение .cnf, иначе mysql их игнорирует. И как только я это исправил, у меня возникла проблема с правами доступа — я разделил файл сертификата на три отдельных файла, но два других файла принадлежали root:root. Как только я это исправил, все заработало.