我試圖找到這個問題的答案,但一無所獲。
我有 LetsEncrypt 的證書,用於滿足我的所有 SSL 需求。它對於我嘗試使用的所有 DNS 名稱均有效。今天我嘗試讓它在 MySQL 上運作,但 MySQL 堅持使用它自己的自簽名憑證。
Ubuntu 軟體包中的 MySQL 版本為 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 所有。一旦我解決了這個問題,一切就都正常了。