나는 이에 대한 답을 찾으려고 노력했지만 텅 빈 결과를 얻었습니다.
모든 SSL 요구 사항에 사용하는 LetsEncrypt의 인증서가 있습니다. 사용하려는 모든 DNS 이름에 유효합니다. 오늘 나는 그것을 MySQL에서 작동시키려고 노력했지만 MySQL은 자체 서명된 인증서를 사용해야 한다고 주장합니다.
MySQL 버전은 Ubuntu 패키지의 8.0.26-0ubuntu0.20.04.2입니다.
다음 내용으로 /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가 소유했습니다. 문제를 해결하고 나면 모든 것이 작동했습니다.