Tentei encontrar uma resposta para isso e não encontrei nada.
Tenho um certificado da LetsEncrypt que uso para todas as minhas necessidades de SSL. É válido para todos os nomes DNS que estou tentando usar. Hoje tentei fazê-lo funcionar no MySQL, mas o MySQL insiste em usar seu próprio certificado autoassinado.
A versão do MySQL é 8.0.26-0ubuntu0.20.04.2 dos pacotes do Ubuntu.
Eu criei /etc/mysql/mysql.conf.d/zz-ssl.conf com este conteúdo:
[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
Mas o log diz o seguinte:
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.
Tentei excluir /var/lib/mysql/*.pem ... mas quando reinicio o mysql, todos esses arquivos voltam com carimbos de data e hora atualizados. O MySQL parece determinado a usar seu próprio certificado autoassinado e não aquele que eu configurei. Acho que estou perdendo algo que deveria ser óbvio, mas não é.
O arquivo /etc/mysql/cert.pem referenciado em minha configuração é de propriedade de mysql:mysql e tem permissões 0600. É uma cópia do arquivo de certificado que uso para todo o resto, contém o certificado do servidor, a chave privada e o certificado emissor do LetsEncrypt.
Responder1
Eu finalmente descobri isso. Os arquivos de configuração devem ter uma extensão de arquivo .cnf ou o mysql os ignorará. E depois de consertar isso, tive um problema de permissão - dividi o arquivo cert em três arquivos separados, mas os outros dois arquivos pertenciam a root:root. Depois que consertei isso, tudo funcionou.