文件

網路加密 (TLS)

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

SSL 已棄用

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

啟用 TLS

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

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

  • 在每個節點上設定 TLS。

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

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

MinIO 伺服器會搜尋每個節點的 TLS 金鑰和憑證,並使用這些憑證來啟用 TLS。搜尋位置取決於您的 MinIO 設定

預設情況下,MinIO 伺服器會在以下目錄中尋找每個節點的 TLS 金鑰和憑證

${HOME}/.minio/certs

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

對於 systemd 管理的部署,這必須對應於執行 MinIO 程序的 USER。如果該使用者沒有主目錄,請改用 自訂路徑 選項。

您可以使用 minio server --certs-dir-S 參數指定 MinIO 伺服器搜尋憑證的路徑。

例如,以下命令片段指示 MinIO 程序使用 /opt/minio/certs 目錄來存放 TLS 憑證。

minio server --certs-dir /opt/minio/certs ...

執行 MinIO 服務的使用者必須擁有此目錄的讀取和寫入權限。

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

例如

/path/to/certs
  private.key
  public.crt

您可以使用 MinIO certgen 來產生自我簽署的憑證,以便使用啟用 TLS 的 MinIO 進行評估。例如,以下命令會產生一個自我簽署的憑證,其中包含一組與 MinIO 伺服器主機相關聯的 IP 和 DNS 主題替代名稱 (SAN)

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

將產生的 public.crtprivate.key 放置到 /path/to/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

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

此資料夾的根路徑取決於您使用預設憑證路徑自訂憑證路徑(minio server --certs-dir-S)。

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

以下範例假設 MinIO 伺服器使用 --certs dir | -S /opt/minio/certs 啟動

/opt/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 憑證。

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

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

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

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

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

自我簽署、內部、私有憑證以及具有中間憑證的公開 CA

如果使用非全球或非公開憑證授權單位簽署的憑證,如果使用需要使用中間憑證的全球 CA,則必須將這些 CA 提供給 MinIO 伺服器。如果 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 簽署的憑證的錯誤。