在 MySQL 5.7 上使用預設 SSL 憑證/金鑰?

在 MySQL 5.7 上使用預設 SSL 憑證/金鑰?

apt-get我使用 root 帳戶連線並檢查 ssl 狀態時安裝了 Percona MySQL 5.7 ( 5.7.21-20-log)

# mysql --ssl
mysql> show variables like '%ssl%';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| have_openssl  | YES             |
| have_ssl      | YES             |
| ssl_ca        | ca.pem          |
| ssl_capath    |                 |
| ssl_cert      | server-cert.pem |
| ssl_cipher    |                 |
| ssl_crl       |                 |
| ssl_crlpath   |                 |
| ssl_key       | server-key.pem  |
+---------------+-----------------+

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.7.21-20, for debian-linux-gnu (x86_64) using  6.3

Connection id:      31
Current database:
Current user:       root@localhost
SSL:            Cipher in use is ECDHE-RSA-AES128-GCM-SHA256

因此預設情況下使用 SSL。但是,當我使用完整命令時

mysql -h 127.0.0.1 -P 3306 -u root  -p  --ssl-ca=/var/lib/mysql/ca.pem --ssl-cert=/var/lib/mysql/server-cert.pem --ssl-key=/var/lib/mysql/server-key.pem

它傳回錯誤

ERROR 2026 (HY000): SSL connection error: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

答案1

您的問題是在客戶端使用伺服器憑證和金鑰。

--ssl-cert=/var/lib/mysql/server-cert.pem --ssl-key=/var/lib/mysql/server-key.pem

如記錄在6.4.2 加密連線的命令選項(重點是我的):

--ssl-cert=file_name

PEM 格式的 SSL 公鑰憑證檔案的路徑名。在客戶端,這是客戶端公鑰證書。在伺服器端,這是伺服器公鑰憑證。在伺服器端,該選項意味著--ssl.

--ssl-key=file_name

PEM 格式的 SSL 私鑰檔案的路徑名。在客戶端,這是客戶端私鑰。在伺服器端,這是伺服器私鑰。在伺服器端,該選項意味著--ssl.

您可以單獨使用 , 強制 TLS 連線--ssl

mysql -h 127.0.0.1 -P 3306 -u root -p --ssl

這裡也可能有用的是--ssl-cipher=cipher_list.使用它,您可以驗證連線是否不使用任何您不想要的密碼,即使伺服器設定允許也是如此。但是,當您對兩者都有權力時,這應該主要在伺服器端進行配置。

相關內容