文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  使用 MySQL 建立 SSL 和 RSA 憑證與金鑰

8.3.3.1 使用 MySQL 建立 SSL 和 RSA 憑證與金鑰

如果遺失支援使用 SSL 的加密連線以及在未加密連線上使用 RSA 的安全密碼交換所需的 SSL 憑證和金鑰檔案以及 RSA 金鑰對檔案,MySQL 提供以下方法來建立這些檔案

  • 伺服器可以在啟動時自動產生這些檔案,適用於 MySQL 發行版本。

重要

伺服器自動產生功能可簡化產生所需檔案的步驟,從而有助於降低使用 SSL 的門檻。但是,以這種方法產生的憑證是自我簽署的,安全性可能不高。在您獲得使用這些憑證的經驗後,請考慮從註冊的憑證授權單位取得憑證和金鑰材料。

重要

如果連線至 MySQL 伺服器執行個體的用戶端使用具有 extendedKeyUsage 擴充功能 (X.509 v3 擴充功能) 的 SSL 憑證,則擴充金鑰用法必須包含用戶端驗證 (clientAuth)。如果僅為伺服器驗證 (serverAuth) 和其他非用戶端憑證用途指定 SSL 憑證,則憑證驗證會失敗,並且用戶端與 MySQL 伺服器執行個體的連線會失敗。MySQL Server 產生的 SSL 憑證中沒有 extendedKeyUsage 擴充功能。如果您以其他方式使用您自己的用戶端憑證,請確保任何 extendedKeyUsage 擴充功能都包含用戶端驗證。

自動 SSL 和 RSA 檔案產生

對於使用 OpenSSL 編譯的 MySQL 發行版本,MySQL 伺服器具有在啟動時自動產生遺失的 SSL 和 RSA 檔案的功能。auto_generate_certssha256_password_auto_generate_rsa_keyscaching_sha2_password_auto_generate_rsa_keys 系統變數控制這些檔案的自動產生。這些變數預設為啟用。它們可以在啟動時啟用和檢查,但無法在執行時設定。

在啟動時,如果啟用 auto_generate_certs 系統變數,且未指定任何 SSL 選項,並且資料目錄中缺少伺服器端的 SSL 檔案,伺服器會自動在資料目錄中產生伺服器端和用戶端 SSL 憑證和金鑰檔案。這些檔案可啟用使用 SSL 的加密用戶端連線;請參閱第 8.3.1 節「設定 MySQL 以使用加密連線」

  1. 伺服器會檢查資料目錄中是否有以下名稱的 SSL 檔案

    ca.pem
    server-cert.pem
    server-key.pem
  2. 如果存在任何這些檔案,伺服器就不會建立 SSL 檔案。否則,它會建立這些檔案,以及一些額外的檔案

    ca.pem               Self-signed CA certificate
    ca-key.pem           CA private key
    server-cert.pem      Server certificate
    server-key.pem       Server private key
    client-cert.pem      Client certificate
    client-key.pem       Client private key
  3. 如果伺服器自動產生 SSL 檔案,它會使用 ca.pemserver-cert.pemserver-key.pem 檔案的名稱來設定相應的系統變數(ssl_cassl_certssl_key)。

在啟動時,如果符合以下所有條件,伺服器會自動在資料目錄中產生 RSA 私鑰/公鑰對檔案:啟用 sha256_password_auto_generate_rsa_keyscaching_sha2_password_auto_generate_rsa_keys 系統變數;未指定任何 RSA 選項;資料目錄中缺少 RSA 檔案。這些金鑰對檔案可啟用使用 RSA 在未加密連線上安全地交換密碼,用於通過 sha256_passwordcaching_sha2_password 外掛程式驗證的身分帳戶;請參閱 第 8.4.1.2 節「SHA-256 可插拔驗證」第 8.4.1.1 節「快取 SHA-2 可插拔驗證」

  1. 伺服器會檢查資料目錄中是否有以下名稱的 RSA 檔案

    private_key.pem      Private member of private/public key pair
    public_key.pem       Public member of private/public key pair
  2. 如果存在任何這些檔案,伺服器就不會建立 RSA 檔案。否則,它會建立這些檔案。

  3. 如果伺服器自動產生 RSA 檔案,它會使用這些檔案的名稱來設定相應的系統變數(sha256_password_private_key_pathsha256_password_public_key_pathcaching_sha2_password_private_key_pathcaching_sha2_password_public_key_path)。

SSL 和 RSA 檔案特性

伺服器自動建立的 SSL 和 RSA 檔案具有以下特性

  • SSL 和 RSA 金鑰的大小為 2048 位元。

  • SSL CA 憑證是自簽名的。

  • SSL 伺服器和用戶端憑證使用 CA 憑證和金鑰進行簽署,使用 sha256WithRSAEncryption 簽章演算法。

  • SSL 憑證使用這些常用名稱 (CN) 值,並具有適當的憑證類型(CA、伺服器、用戶端)

    ca.pem:         MySQL_Server_suffix_Auto_Generated_CA_Certificate
    server-cert.pm: MySQL_Server_suffix_Auto_Generated_Server_Certificate
    client-cert.pm: MySQL_Server_suffix_Auto_Generated_Client_Certificate

    suffix 值基於 MySQL 版本號碼。

    對於伺服器產生的檔案,如果產生的 CN 值超過 64 個字元,則會省略名稱的 _suffix 部分。

  • SSL 檔案的國家 (C)、州或省 (ST)、組織 (O)、組織單位名稱 (OU) 和電子郵件地址的值為空白。

  • 伺服器建立的 SSL 檔案自產生時起十年內有效。

  • RSA 檔案不會過期。

  • SSL 檔案的每個憑證/金鑰對都有不同的序號(CA 為 1,伺服器為 2,用戶端為 3)。

  • 伺服器自動建立的檔案由執行伺服器的帳戶擁有。

  • 在 Unix 和類 Unix 系統上,憑證檔案的檔案存取模式為 644(即,世界可讀取),而金鑰檔案的檔案存取模式為 600(即,只能由執行伺服器的帳戶存取)。

若要查看 SSL 憑證的內容(例如,檢查其有效的日期範圍),請直接呼叫 openssl

openssl x509 -text -in ca.pem
openssl x509 -text -in server-cert.pem
openssl x509 -text -in client-cert.pem

也可以使用此 SQL 陳述式檢查 SSL 憑證到期資訊

mysql> SHOW STATUS LIKE 'Ssl_server_not%';
+-----------------------+--------------------------+
| Variable_name         | Value                    |
+-----------------------+--------------------------+
| Ssl_server_not_after  | Apr 28 14:16:39 2027 GMT |
| Ssl_server_not_before | May  1 14:16:39 2017 GMT |
+-----------------------+--------------------------+