中文文档

网络加密(TLS)

MinIO支持传输层安全性(TLS)1.2+加密的进出流量。

SSL已废弃

TLS是安全套接字层(SSL)加密的后继者。 自2018年6月30日起,SSL已完全被废弃,详见 已弃用公告 。

启用 TLS

对于具有有效 集群签名证书, MinIO Kubernetes Operator 可以在部署或修改 MinIO 租户时自动生成 TLS 证书,前提是 Kubernetes 集群具有有效的,请查看 k8s 布署安全文档 或者 修改相关安全设置的文档 TLS 证书生成过程如下:

  • 该运算符将为租户生成与之关联的证书签名请求 (CSR)。 CSR 包括适合于租户服务和 Pod 的正确 DNS 主题备用名称 (SAN)。

    然后,该运算符会等待 CSR CSR () 被批准。

  • CSR 等待审批,如果正确配置,

Kubernetes TLS API可以自动批准 CSR 否则,集群管理员必须在Kubernetes生成必要的证书之前手动批准 CSR 。

  • 运营商将生成的TLS证书应用于租户中的每个MinIO Pod。

Kubernetes TLS API 使用 Kubernetes 集群的证书颁发机构(CA)签名算法来生成新的 TLS 证书。 请查看 支持的 TLS 密码套件 ,了解 MinIO 支持的完整 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 操作员支持使用 cert-manager 完全替代其内置的自动证书管理 或 用户驱动的手动证书管理。 有关使用 cert-manager 部署 MinIO 操作员和租户的说明,请参阅 cert-manager 页面 。

MinIO 服务器会搜索每个节点的 TLS 密钥和证书,并使用这些凭据启用 TLS。 搜索位置取决于您的 MinIO 配置:

默认情况下,MinIO 服务器在以下目录中查找每个节点的 TLS 密钥和证书:

${HOME}/.minio/certs

其中 ${HOME} 是运行 MinIO Server 进程的用户的 home 目录。 如果 ${HOME}/.minio/certs 目录不存在,您可能需要创建它。

对于由 systemd 管理的部署,这必须对应于运行 MinIO 进程的 USER 。 如果该用户没有 home 目录,请使用 Custom Path 选项代替。

您可以使用 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 主机名(SANs):

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

将生成的 public.crt 和 private.key 文件放置到 /path/to/certs 目录中,以启用 MinIO 部署的 TLS 功能。 应用程序可以使用 public.crt 作为受信任的证书颁发机构,以允许连接到MinIO部署,而无需禁用证书验证。

如果您正在重新配置一个之前未启用TLS的现有部署,请更新环境变量 MINIO_VOLUMES,将其指定为 https 而不是 http 。 您可能还需要更新应用程序或客户端使用的URL。

Supported Secret Types

MinIO 支持在 Kubernetes 中使用三种类型的 secrets:

  1. opaque

    使用 private.key 和 public.crt 文件。

  2. tls

    使用 tls.key 和 tls.crt 文件.

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

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

备注

为了获得最佳的 tls 或 cert-manager 秘密支持,请升级到 Operator 版本 5.0.10 或更高版本。

基于多个域的 TLS 证书

MinIO Operator 支持在 部署 或 修改 MinIO 租户时附加用户指定的 TLS 证书。

这些自定义证书支持 服务器名称指示 (SNI),其中 MinIO 服务器根据连接客户端指定的主机名来确定使用哪个证书。 例如,您可以生成由您组织偏好的证书颁发机构(CA)签名的证书,并将这些证书附加到 MinIO 租户上。 信任该证书颁发机构 CA 的应用程序可以连接到 MinIO 租户,并完全验证租户的 TLS 证书。

支持的 TLS 密码套件

MinIO 建议生成 ECDSA(例如 NIST P-256 曲线)或 EdDSA(例如 Curve25519)TLS 私钥/证书,因为与 RSA 相比,它们的计算要求较低。

MinIO 支持 Go语言。 这些列表用星形填充图标标记推荐的算法:

  • 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 Kubernetes Operator 可以在 部署 或 修改 MinIO 租户时自动附加第三方证书颁发机构。

您可以在任何时候为租户添加、更新或删除证书颁发机构(CA)。 您必须重新启动 MinIO 租户,以便对配置的证书颁发机构(CA)所做的更改生效。

Operator将指定的证书颁发机构(CA)放置在每个 MinIO 服务器 Pod 上,以便所有 Pod 都有一组一致的受信任的 CA。

如果 MinIO 服务器无法将传入客户端的 TLS 证书发行者与任何可用的证书颁发机构(CA)进行匹配,服务器将拒绝该连接,认为其无效。

自签名、内部、私有证书以及带有中级证书的公共证书颁发机构(CAs)

如果正在部署使用非全局或非公共证书颁发机构发行的证书的 MinIO 租户, 或者 使用需要使用中级证书的全局证书颁发机构,那么您必须将这些证书颁发机构提供给操作员,以确保它可以信任这些证书。

如果操作员使用的是未受信任的证书部署租户,它可能会记录与 TLS 证书验证相关的警告。

以下步骤将包含证书颁发机构 public.crt 的密钥附加到 MinIO 操作员。 您可以在单个证书中指定多个证书颁发机构,只要保持 BEGIN 和 END 分隔符不变。

  1. 创建 operator-ca-tls 密钥

    以下内容在 MinIO Operator 命名空间中创建一个 Kubernetes 密钥 ( minio-operator ).

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

    public.crt 文件必须对应于包含一个或多个 CA 定义的有效 TLS 证书。

  2. 重启Operator

    一旦创建,您必须重新启动操作员以加载新的证书颁发机构:

    kubectl rollout restart deployments.apps/minio-operator -n minio-operator
    
Join Slack 商业支持购买咨询