文件

網路加密 (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 金鑰和憑證

%%USERPROFILE%%\.minio\certs

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

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

例如

%%USERPROFILE%%\.minio\certs
  private.key
  public.crt

其中 %%USERPROFILE%% 是執行 MinIO 伺服器處理序的使用者的使用者設定檔資料夾的位置。

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

certgen.exe -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 私密金鑰和公鑰放入子資料夾中。

例如

%%USERPROFILE%%\.minio\certs
  private.key
  public.crt
  s3-example.net\
    private.key
    public.crt
  internal-example.net\
    private.key
    public.crt

雖然您可以使用一個涵蓋具有多個主體別名 (SAN) 的所有主機名稱的 TLS 憑證,但這會向任何檢查伺服器憑證的客戶端揭露 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 憑證。

您可以將其他信任的憑證授權單位檔案放入以下目錄:

%%USERPROFILE%%\.minio\certs\CAs

其中 %%USERPROFILE%% 是執行 MinIO 伺服器處理序的使用者的使用者設定檔資料夾的位置。

對於使用自訂 TLS 目錄啟動的部署 minio server --certs-dir,伺服器會在指定目錄的 \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 簽署的憑證時的錯誤。