文件

網路加密 (TLS)

MinIO 支援傳輸層安全 (TLS) 1.2+ 加密傳入和傳出的流量。

SSL 已棄用

TLS 是安全通訊端層 (SSL) 加密的後繼者。自 2018 年 6 月 30 日起,SSL 已完全棄用

啟用 TLS

支援的密鑰類型

MinIO 支援 Kubernetes 中的三種類型密鑰

  1. 不透明

    使用 private.keypublic.crt 檔案。

  2. tls

    使用 tls.keytls.crt 檔案。

  3. cert-manager 1.7.x 或更高版本

    在 Kubernetes 1.21 或更高版本上執行。

注意

為了獲得對 *tls* 或 *cert-manager* 密鑰的最佳支援,請升級到 Operator 版本 5.0.10 或更高版本。

多個基於網域的 TLS 憑證

部署修改 MinIO 租戶時,MinIO Operator 支援附加使用者指定的 TLS 憑證。

這些自訂憑證支援伺服器名稱指示 (SNI),其中 MinIO 伺服器根據連接用戶端指定的網域名稱來識別要使用的憑證。例如,您可以產生由貴組織偏好的憑證授權單位 (CA) 簽署的憑證,並將這些憑證附加到 MinIO 租戶。信任該CA的應用程式可以連線到 MinIO 租戶,並完全驗證租戶 TLS 憑證。

支援的 TLS 加密套件

MinIO 建議產生 ECDSA (例如NIST P-256 曲線) 或 EdDSA (例如Curve25519) TLS 私密金鑰/憑證,因為與 RSA 相比,它們的計算要求較低。

MinIO 支援 Go 支援的以下 TLS 1.2 和 1.3 加密套件。清單以標示建議的演算法圖示

  • TLS_CHACHA20_POLY1305_SHA256

  • TLS_AES_128_GCM_SHA256

  • TLS_AES_256_GCM_SHA384

  • TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305

  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384

  • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305

  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

對於具有有效 TLS 叢集簽署憑證 的 Kubernetes 叢集,MinIO Kubernetes Operator 可以在部署修改 MinIO 租戶時自動產生 TLS 憑證。TLS 憑證產生過程如下:

  • Operator 會產生與租戶相關聯的憑證簽署請求 (CSR)。CSR 包括租戶服務和 Pod 的適當 DNS 主體替代名稱 (SAN)。

    然後,Operator 會等待CSR核准

  • CSR 等待核准。如果已正確設定,Kubernetes TLS API 可以自動核准 CSR。否則,叢集管理員必須先手動核准 CSR,Kubernetes 才能產生必要的憑證。

  • Operator 會將產生的 TLS 憑證套用至租戶中的每個 MinIO Pod。

Kubernetes TLS API 在產生新的 TLS 憑證時會使用 Kubernetes 叢集憑證授權單位 (CA) 簽署演算法。如需 MinIO 支援的完整 TLS 密碼套件清單和建議的簽署演算法,請參閱支援的 TLS 密碼套件

依預設,Kubernetes 會將憑證套件放置在每個 Pod 的 /var/run/secrets/kubernetes.io/serviceaccount/ca.crt。此 CA 套件應包含用於簽署 MinIO 租戶 TLS 憑證的叢集或根 CA。部署在 Kubernetes 叢集中的其他應用程式可以信任此叢集憑證,以使用MinIO 服務 DNS 名稱 (例如 https://minio.minio-tenant-1.svc.cluster-domain.example:443) 連線至 MinIO 租戶。

主體替代名稱憑證

如果您有自訂的主體替代名稱 (SAN) 憑證,該憑證不是萬用字元憑證,則 TLS 憑證 SAN **必須**適用於其父節點的主機名稱。如果沒有萬用字元,SAN 必須完全相符才能連線至租戶。

使用 cert-manager 進行憑證管理

MinIO Operator 支援使用 cert-manager 來完全取代其內建的自動憑證管理使用者驅動的手動憑證管理。如需使用 cert-manager 部署 MinIO Operator 和租戶的指示,請參閱cert-manager 頁面

第三方憑證授權單位

MinIO Kubernetes Operator 可以在部署修改 MinIO 租戶時自動附加第三方憑證授權單位。

您可以隨時新增、更新或移除租戶的 CA。您必須重新啟動 MinIO 租戶,變更的已設定 CA 才會套用。

Operator 會將指定的 CA 放置在每個 MinIO Server Pod 上,以便所有 Pod 都具有一致的信任 CA 集。

如果 MinIO Server 無法比對任何可用的 CA,找出連入用戶端的 TLS 憑證簽發者,伺服器會拒絕連線,視為無效連線。

使用中繼憑證的自我簽署、內部、私有憑證和公開 CA

如果部署的 MinIO 租戶憑證是由非全球或非公開憑證授權單位所建立,如果使用需要使用中繼憑證的全球 CA,您必須將這些 CA 提供給 Operator,以確保它信任這些憑證。

Operator 可能會記錄與使用不受信任憑證部署的租戶相關的 TLS 憑證驗證警告。

下列程序會將包含憑證授權單位的 public.crt 的 secret 附加至 MinIO Operator。您可以在單一憑證中指定多個 CA,只要您保持 BEGINEND 分隔符號不變即可。

  1. 建立 operator-ca-tls secret

    下列程式碼會在 MinIO Operator 命名空間 (minio-operator) 中建立 Kubernetes secret。

    kubectl create secret generic operator-ca-tls \
       --from-file=public.crt -n minio-operator
    

    public.crt 檔案必須對應至包含一或多個 CA 定義的有效 TLS 憑證。

  2. 重新啟動 Operator

    建立完成後,您必須重新啟動 Operator,才能載入新的 CA

    kubectl rollout restart deployments.apps/minio-operator -n minio-operator