文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

MinIO Documentation

为 MinIO 启用多域名 TLS

MinIO 支持传输层安全性 (TLS) 1.2+ 版本的入站和出站流量加密。

MinIO Operator 支持以下方式为 MinIO Tenant 启用 TLS:

  • 使用 Kubernetes 集群签名证书自动配置 TLS

  • 用户指定的TLS使用Kubernetes密钥

  • Certmanager管理的TLS证书

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

这些自定义证书支持Server Name Indication (SNI), MinIO 服务器根据连接客户端指定的主机名来识别要使用的证书。 例如,您可以生成由组织首选证书颁发机构(CA)签名的证书,并将这些证书附加到 MinIO 租户。 信任该 CA 的应用程序CA可以连接到 MinIO 租户并完全验证租户 TLS 证书。

MinIO 会自动检测配置目录或默认目录中的 TLS 证书,并启用 TLS 启动服务。

MinIO 服务器支持多个 TLS 证书,其中服务器使用Server Name Indication (SNI)用于识别在响应客户端请求时使用哪个证书。 当客户端使用特定主机名连接时,MinIO 使用SNI为该主机名选择合适的TLS证书。

此过程记录了在 MinIO 中为多个域名启用 TLS 的步骤。 有关单域名 TLS 的说明,请参阅 TODO

前提条件

访问 MinIO 集群

您必须拥有对 Kubernetes 集群的访问权限,并具备相应的管理权限。kubectlconfiguration.

此过程假设您的权限集已充分扩展,以支持在 Kubernetes 集群上部署或修改与 MinIO 相关的资源,包括但不限于 pods、statefulsets、replicasets、deployments 和 secrets。

此过程使用mc用于在 MinIO 集群上执行操作。 安装mc在可以访问集群网络的机器上。 请参阅mc 安装快速入门有关下载和安装的说明mc.

此过程假设已配置alias对于 MinIO 集群。

此过程还假设对每个 MinIO 主机服务器具有 SSH 或类似 shell 级别的访问权限,并拥有管理权限。

TLS Certificates

使用一个必要的TLS证书进行配置支持的密码套件供 MinIO 使用。

MinIO TLS on Kubernetes有关支持的租户 TLS 配置的更完整指南。

使用您偏好的方式配置证书,例如通过您组织的内部证书颁发机构,或使用知名的全球提供商(如 Digicert 或 Verisign)。

您可以使用自签名证书创建openssl对于 MinIOcertgen工具。

例如,以下命令生成一个自签名证书,其中包含一组与MinIO服务器主机关联的IP和DNS主题备用名称(SAN):

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

MinIO Baremetal TLS有关证书生成和放置的更完整指导。

过程

MinIO Operator 支持三种在 MinIO 租户上管理 TLS 证书的方法:

  • MinIO 自动 TLS 证书生成

  • 用户指定的TLS证书

  • cert-manager托管TLS证书

您也可以部署未启用 TLS 的 MinIO 租户。

以下步骤适用于使用 MinIO 的新部署和现有部署Kustomize:

  1. Review theTenant CRD TenantSpec.requestAutoCertTenantSpec.certConfig字段。

    对于现有的 MinIO 租户,请检查用于创建该租户的 Kustomize 资源,并内省这些字段及其当前配置(如果有)。

  2. 创建或修改您的租户 YAML 以设置以下值:requestAutoCertcertConfig必要时。 例如:

    spec:
       requestAutoCert: true
       certConfig:
         commonName: "CN=MinioTenantCommonName"
         organizationName: "O=MyOrganizationName"
         dnsNames:
           - 'minio-tenant.domain.tld'
           - '*.kubernete.cluster.dns.path.tld'
    

    Thespec.certConfig.dnsNames应该包含一个列表SANTLS证书覆盖的范围。

    查看Kustomize 租户基础 YAML作为创建或修改租户资源指导的基线模板。

  3. 应用新的 Kustomization 模板

    一旦应用更改,MinIO Operator 会自动重新部署具有更新配置的租户。

以下步骤适用于使用 MinIO 的新部署和现有部署Kustomize:

  1. Review theTenant CRD TenantSpec.externalCertsCecret字段

    对于现有的 MinIO 租户,请检查用于创建该租户的 Kustomize 资源,并查看该字段的当前配置(如果有)。

  2. 创建或修改您的租户 YAML 以引用适当的cert-manager资源。

    例如,以下 Tenant YAML 片段引用了一个 cert-manager 资源myminio-tls:

    apiVersion: minio.min.io/v2
    kind: Tenant
    metadata:
    name: myminio
    namespace: minio-tenant
    spec:
       ## Disable default tls certificates.
       requestAutoCert: false
       ## Use certificates generated by cert-manager.
       externalCertSecret:
          - name: default-domain
            type: cert-manager.io/v1
          - name: internal-domain
            type: cert-manager.io/v1
          - name: external-domain
            type: cert-manager.io/v1
    
  3. 应用新的 Kustomization 模板

    一旦应用更改,MinIO Operator 会自动重新部署具有更新配置的租户。

以下步骤适用于使用 MinIO 的新部署和现有部署Kustomize:

  1. Review theTenant CRD TenantSpec.externalCertSecret字段。

    对于现有的 MinIO 租户,请检查用于创建该租户的 Kustomize 资源,并查看该字段的当前配置(如果有)。

  2. 创建或修改您的租户 YAML 以引用类型为 secret 的密钥kubernetes.io/tls:

    例如,以下租户 YAML 片段为 MinIO 租户接受连接的每个域名引用了两个 TLS 密钥:

    apiVersion: minio.min.io/v2
    kind: Tenant
    metadata:
    name: myminio
    namespace: minio-tenant
    spec:
       ## Disable default tls certificates.
       requestAutoCert: false
       ## Use certificates generated by cert-manager.
       externalCertSecret:
       - name: domain-certificate-1
       type: kubernetes.io/tls
       - name: domain-certificate-2
       type: kubernetes.io/tls
    
  3. 应用新的 Kustomization 模板

    一旦应用更改,MinIO Operator 会自动重新部署具有更新配置的租户。

MinIO Server 会为每个节点搜索 TLS 密钥和证书,并使用这些凭据启用 TLS。 MinIO 在发现并验证证书后会自动启用 TLS。 搜索位置取决于您的 MinIO 配置:

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

${HOME}/.minio/certs

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

对于systemd托管部署中这必须对应于USER运行 MinIO 进程。 如果该用户没有主目录,请使用自定义路径作为替代选项。

您可以为 MinIO 服务器指定一个路径来搜索证书,使用minio server --certs-dir or -Sparameter.

例如,以下命令片段指示 MinIO 进程使用/opt/minio/certsTLS证书目录。

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

运行 MinIO 服务的用户必须对此目录拥有读写权限。

将证书放置在/certs文件夹,在其中创建一个子文件夹/certs对于 MinIO 需要提供 TLS 证书的每个额外域名。 虽然 MinIO 对文件夹名称没有要求,但建议创建与域名匹配的子文件夹以提高人工可读性。 将该域名的 TLS 私钥和公钥放置在对应的子文件夹中。

/path/to/certs
   private.key
   public.crt
   s3-example.net/
      private.key
      public.crt
   internal-example.net/
      private.key
      public.crt