文件

網路加密 (TLS)

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

SSL 已過時

TLS 是安全通訊端層 (SSL) 加密的後繼者。SSL 已於 2018 年 6 月 30 日完全過時

啟用 TLS

以下各節說明如何為 MinIO 啟用 TLS。您可以使用來自知名憑證授權單位、內部或私有 CA 或自我簽署憑證的 TLS 憑證。

在開始之前,請注意以下重點

  • 在每個節點上設定 TLS。

  • 確保執行 MinIO 伺服器程序的使用者可以讀取憑證。

  • 更新 MINIO_VOLUMES 和任何所需的服務或應用程式,以使用 HTTPS URL。

MinIO 伺服器會搜尋以下目錄以尋找 TLS 金鑰和憑證

${HOME}/.minio/certs

對於使用自訂 TLS 目錄 minio server --certs-dir 啟動的部署,請使用該目錄,而不是預設目錄。

將預設網域 (例如 minio.example.net) 的 TLS 憑證放置在 /certs 目錄中,私密金鑰為 private.key,公開憑證為 public.crt

例如

${HOME}/.minio/certs
  private.key
  public.crt

其中 ${HOME} 是執行 MinIO 伺服器程序的使用者的主目錄。如果 ${HOME}/.minio/certs 目錄不存在,您可能需要建立該目錄。

您可以使用 MinIO certgen 為啟用 TLS 的 MinIO 評估建立自我簽署憑證。例如,以下命令會產生一個自我簽署憑證,其中包含一組與 MinIO 伺服器主機相關聯的 IP 和 DNS SAN

certgen -host "localhost,minio-*.example.net"

將產生的 public.crtprivate.key 放入 /.minio/certs 目錄中,以為 MinIO 部署啟用 TLS。應用程式可以使用 public.crt 作為受信任的憑證授權單位,允許連線到 MinIO 部署,而無需停用憑證驗證。

如果您要重新設定先前未啟用 TLS 的現有部署,請更新 MINIO_VOLUMES 以指定 https 而不是 http。您可能還需要更新應用程式或用戶端使用的 URL。

多個基於網域的 TLS 憑證

MinIO 伺服器支援多個 TLS 憑證,其中伺服器使用伺服器名稱指示 (SNI) 來識別在回應用戶端請求時要使用的憑證。當用戶端使用特定主機名稱連線時,MinIO 會使用 SNI 來選取該主機名稱的適當 TLS 憑證。

例如,考慮一個可透過以下主機名稱存取的 MinIO 部署

  • https://minio.example.net (預設 TLS 憑證)

  • https://s3.example.net

  • https://minio.internal-example.net

為每個 MinIO 應提供 TLS 憑證的額外網域,在 /certs 中建立一個子資料夾。雖然 MinIO 對於資料夾名稱沒有任何要求,但建議建立與網域名稱相符的子資料夾名稱,以提高人類可讀性。將該網域的 TLS 私鑰和公鑰放置於子資料夾中。

例如

${HOME}/.minio/certs
  private.key
  public.crt
  s3-example.net/
    private.key
    public.crt
  internal-example.net/
    private.key
    public.crt

雖然您可以使用一個 TLS 憑證涵蓋具有多個主體別名 (SAN) 的所有主機名稱,但這會向任何檢查伺服器憑證的客戶端揭露 internal-example.nets3-example.net 主機名稱。針對每個主機名稱使用一個 TLS 憑證可以更好地保護每個個別的主機名稱,使其不被發現。個別 TLS 憑證的 SAN 必須適用於其各自父節點的主機名稱。

如果客戶端指定的主機名稱或 IP 位址與任何已配置的 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

第三方憑證授權機構

MinIO 伺服器會針對主機系統的信任根憑證儲存庫驗證每個連線客戶端提供的 TLS 憑證。

您可以將額外的信任憑證授權機構檔案放置於以下目錄

${HOME}/.minio/certs/CAs

其中 ${HOME} 是執行 MinIO 伺服器程序的使用者的主目錄。如果 ${HOME}/.minio/certs 目錄不存在,您可能需要建立該目錄。

對於使用自訂 TLS 目錄啟動的部署,minio server --certs-dir,伺服器會在指定的目錄中的 /certs/CAs 路徑中進行搜尋。

將每個 CA 的憑證檔案放置於 /CAs 子目錄中。確保 MinIO 部署中的所有主機在該目錄中都具有一致的信任 CA 集合。如果 MinIO 伺服器無法將傳入客戶端的 TLS 憑證發行者與任何可用的 CA 相匹配,伺服器會拒絕該連線,視為無效。

自簽署、內部、私人憑證,以及具有中繼憑證的公開 CA

如果使用由非全球或非公開憑證授權機構簽署的憑證,如果使用需要使用中繼憑證的全球 CA,則必須向 MinIO 伺服器提供這些 CA。如果 MinIO 伺服器沒有必要的 CA,則在連線到其他服務時,可能會傳回與 TLS 驗證相關的警告或錯誤。

將 CA 憑證放置於 /certs/CAs 資料夾中。此資料夾的根路徑取決於您是否使用預設憑證路徑 自訂憑證路徑 (minio server --certs-dir-S)

mv myCA.crt ${HOME}/.minio/certs/CAs

以下範例假設 MinIO 伺服器是以 --certs dir /opt/minio/certs 啟動的

mv myCA.crt /opt/minio/certs/CAs/

對於自簽署憑證,憑證授權機構通常是用於簽署憑證的私鑰。

對於由內部、私人或其他非全球憑證授權機構簽署的憑證,請使用簽署憑證的相同 CA。非全球 CA 必須包含從中繼憑證到根憑證的完整信任鏈。

如果提供的檔案不是 X.509 憑證,MinIO 會忽略它,並且可能會在驗證由該 CA 簽署的憑證時傳回錯誤。