天天看点

配置Harbor镜像仓库HTTPS Secure Registry配置Harbor镜像仓库HTTPS Secure Registry

文章目录

  • 配置Harbor镜像仓库HTTPS Secure Registry
    • 前言
    • 生成证书
      • 生成CA证书
      • 生成证书签名请求(CSR)
      • 生成Harbor证书(Harbor hostname为IP)
      • CA证书文件列表
      • 复制证书到指定位置
    • 配置Harbor
    • 通过浏览器访问Harbor
    • 配置Docker
    • 参考文档

配置Harbor镜像仓库HTTPS Secure Registry

前言

在之前的文章我们介绍了如何搭建Harbor镜像仓库 HTTP Insecure Registry,这篇文章我们再来介绍如何为Harbor镜像仓库配置HTTPS。

生成证书

生成CA证书

openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout ca.key \
-x509 -days 3650 -out ca.crt \
-subj "/C=CN/ST=Guangdong/L=Guangzhou/O=example/OU=example/CN=example"
           

subj参数说明如下:

字段 字段含义 示例
/C= Country 国家 CN
/ST= State or Province 省 Guangdong
/L= Location or City 城市 Guangzhou
/O= Organization 组织或企业
/OU= Organization Unit 部门
/CN= Common Name 域名或IP

生成证书签名请求(CSR)

openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout harbor.key \
-out harbor.csr \
-subj "/C=CN/ST=Guangdong/L=Guangzhou/O=example/OU=example/CN=example"
           

生成Harbor证书(Harbor hostname为IP)

创建一个配置文件来指定IP地址:

vim extfile.cnf
subjectAltName = IP:192.168.37.170
           

生成Harbor证书:

openssl x509 -req -days 3650 \
-in harbor.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
-extfile extfile.cnf \
-out harbor.crt
           

CA证书文件列表

文件名 说明
ca.crt CA证书公钥
ca.key CA证书密钥(不能公布和泄露)
harbor.crt Harbor证书公钥
harbor.key Harbor证书密钥(不能公布和泄露)

复制证书到指定位置

sudo cp *.crt *.key /etc/ssl/certs
           

配置Harbor

编辑

harbor.cfg

文件:

ui_url_protocol = https
ssl_cert = /etc/ssl/certs/harbor.crt
ssl_cert_key = /data/cert/harbor.key
           

重新配置Harbor:

docker-compose down -v
./prepare
docker-compose up -d
           

通过浏览器访问Harbor

在浏览器中打开https://<harbor_hostname>来访问Harbor。

在Firefox浏览器中可以添加Security Exception来忽略HTTPS错误警告。

Chrome浏览器可以尝试通过导入CA证书的方式来忽略HTTPS错误警告。

注意:Chrome浏览器可能有导入CA证书后仍然无法访问的问题。

配置Docker

如果之前在

/etc/docker/daemon.json

中定义了

insecure-registries

,则需要移除

insecure-registries

,并运行以下命令重新加载和重启Docker:

systemctl daemon-reload
systemctl restart docker
           

尝试运行

docker login <harbor_hostname>

来访问Harbor,因为未配置证书会遇到"x509 certificate signed by unknown authority"的错误。

请参考下面的文章来配置Docker的证书:

  • Harbor docker login x509 certificate signed by unknown authority

配置好后,尝试

docker login

docker pull

docker push

命令是否工作正常。

除了在Harbor的机器上配置Docker外,其它机器的Docker想要访问Harbor也要参考上面的文章来配置证书。

参考文档

  • https://github.com/goharbor/harbor/blob/master/docs/configure_https.md
  • https://blog.inkubate.io/how-to-use-harbor-private-registry-with-kubernetes/
  • https://ivanzz1001.github.io/records/post/docker/2018/04/09/docker-harbor-https
  • https://www.shellhacks.com/create-csr-openssl-without-prompt-non-interactive/