配置 Harbor 组件之间的内部 TLS 通信

默认情况下,Harbor 组件(harbor-core、 harbor-jobservice、proxy、harbor-portal、registry、registryctl、trivy_adapter、chartmuseum)之间的内部通信使用 HTTP 协议,这对于某些生产环境可能不够安全。自 Harbor v2.0 起,TLS 可以用于此内部网络。在生产环境中,始终建议使用 HTTPS。

此功能通过 harbor.yml 文件中的 internal_tls 引入。要启用内部 TLS,请将 enabled 设置为 true,并将 dir 值设置为包含内部证书文件的目录路径。

所有证书都可以通过 prepare 工具自动生成。

docker run -v /:/hostfs goharbor/prepare:<current_harbor_version> gencert -p /path/to/internal/tls/cert

用户也可以提供自己的 CA 来生成其他证书。只需将 CA 的证书和密钥放在内部 TLS 证书目录中,并将其命名为 harbor_internal_ca.keyharbor_internal_ca.crt。此外,用户还可以为所有组件提供证书。但是,证书有一些约束条件

  • 首先,所有证书必须由单个唯一的 CA 签名
  • 其次,内部证书的文件名和证书文件上的 CN 字段必须遵循下面列出的约定。
  • 第三,由于 Golang 1.5 中已弃用不带 SAN 的自签名证书,因此在自行生成证书时,必须将 SAN 扩展添加到证书文件中,否则 Harbor 实例将无法正常启动。SAN 扩展中的 DNS 名称应与下表中的 CN 字段相同。有关更多信息,请参阅 golang 1.5 发行说明此问题
    名称 用途 CN
    harbor_internal_ca.key 内部 TLS 的 CA 密钥文件 N/A
    harbor_internal_ca.crt 内部 TLS 的 CA 证书文件 N/A
    core.key Core 组件的密钥文件 N/A
    core.crt Core 组件的证书文件 core
    job_service.key Job Service 组件的密钥文件 N/A
    job_service.crt Job Service 组件的证书文件 jobservice
    proxy.key Proxy 组件的密钥文件 N/A
    proxy.crt Proxy 组件的证书文件 proxy
    portal.key Portal 组件的密钥文件 N/A
    portal.crt Portal 组件的证书文件 portal
    registry.key Registry 组件的密钥文件 N/A
    registry.crt Registry 组件的证书文件 registry
    registryctl.key Registry Controller 组件的密钥文件 N/A
    registryctl.crt Registry Controller 组件的证书文件 registryctl
    trivy_adapter.key Trivy Adapter 组件的密钥文件 N/A
    trivy_adapter.crt Trivy Adapter 组件的证书文件 trivy-adapter