为 Docker Harbor 设置HTTPS, 需要经历如下步骤:
- 设置域名
- 开启https
- 生成证书
- 配置Harbor的证书
- docker daemon信任证书
设置Harbor的域名
打开 harbor.cfg 配置 hostname
打开https
打开 harbor.cfg 配置 ui_url_protocol
生成证书
创建自签的CA
|
|
生成签名
|
|
ps: 如果使用域名访问registry,这里是test.registry.azure, 那么签名的CN(Common Name) 必须是test.registry.azure。如果使用IP地址,那么CN可以任意选择。如果不对,就会出现如下类似错误。
生成证书
|
|
如果使用的是IP地址,可以执行如下命令:
|
|
配置Harbor证书
打开harbor.cfg
Docker daemon信任证书
保证Docker daemon没有开启 -insecure-registry
重启docker。
|
|
完成。
问题: harbor部署在内网,如果外网想要访问就需要通过堡垒机的nginx代理转发,nginx没有配置https导致不能登录harbor。
如图所示,login返回状态码200,带有cookie,但是获取当前用户时,并没有把该cookie带上。
login登录返回的cookie中,带有secure属性,强制要求使用https,否则就会失效。
配置nginx使用https后登录成功。