配置 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.key
和 harbor_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
贡献