Harbor支持Https(扩展)

为了支持微服务推送我们需要将HarBor设置为https,可以让HarBor在任何地方使用以及推送

前面说了怎么搭建harbor仓库,这里讲一讲harbor实现https访问,因为只需要内网访问,没必要去申请一个ssl证书,所以我就用openssl颁发自签名证书,实现https访问。

生成证书颁发机构证书

在生产环境中,您应该从CA获得证书,在测试或开发环境中,您可以生成自己的CA,要生成CA证书,请运行以下命令

创建证书目录

mkdir -p /tmp/data/cert && cd /tmp/data/cert && ll
生成CA证书私钥
openssl genrsa -out ca.key 4096
生成CA证书
调整-subj选项中的值以反映您的组织,如果使用FQDN连接Harbor主机,则必须将其指定为通用名称(CN)属性

openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=itcast/OU=Personal/CN=itcast.harbor.com" \
 -key ca.key \
 -out ca.crt
这里subj是主题的意思含义如下

C=国家,S=省(市),L=区(县、市),O=组织机构,OU=组织单位,CN=通用名称

生成服务器证书

证书通常包含一个.crt文件和一个.key文件,例如yourdomain.com.crtyourdomain.com.key

生成私钥
openssl genrsa -out itcast.harbor.com.key 4096
生成证书签名请求(CSR)
调整-subj选项中的值以反映您的组织。如果使用FQDN连接Harbor主机,则必须将其指定为通用名称(CN)属性,并在密钥和CSR文件名中使用它

openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=itcast/OU=Personal/CN=itcast.harbor.com" \
    -key itcast.harbor.com.key \
    -out itcast.harbor.com.csr
生成一个x509 v3扩展文件
无论您使用FQDN还是IP地址连接到Harbor主机,都必须创建此文件,以便可以为您的Harbor主机生成符合主题备用名称(SAN)和x509 v3的证书扩展要求,替换DNS条目以反映您的域。

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=itcast.harbor.com
DNS.2=itcast.harbor
DNS.3=harbor
EOF
生产主机证书
使用该v3.ext文件为您的Harbor主机生成证书,注意将yourdomain.comCRS和CRT文件名中的替换为Harbor主机名。

openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in itcast.harbor.com.csr \
    -out itcast.harbor.com.crt

配置harbor.yml

然后进入harbor安装目录修改harbor.yml,修改下面几个选项

  • hostname,使用IP或域名,不要用回环地址,localhost等
  • certificate,yourdomain.com.crt的路径/tmp/data/cert/test.harbor.com.crt
  • private_key,yourdomainr.com.key的路径/tmp/data/cert/test.harbor.com.key 

重新安装harbor服务

停止harbor

停止运行中的服务

 docker-compose down
运行目录harbor下的prepare完成https的配置

./prepare

重新安装
在harbor目录下运行安装命令

./install.sh

修改Docker推送配置
我们需要将推送的IP改成域名

vi /etc/docker/daemon.json
上文中我们对registry已经操作了,这里需要改用harbor,需要重新配置

#因为默认端口号是80 所以不需要加端口号
{ "insecure-registries": ["仓库IP或域名"] }
完整的配置如下

{
  "insecure-registries": ["test.harbor.com"],
  "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
}

执行以下命令重启重新加载配置并生效

systemctl daemon-reload
service docker restart

修改本地host文件

为了让本机能够正常访问到harbor的web环境需要配置本地的hosts文件增加如下配置

192.168.64.153 test.harbor.com

windows环境下host路径在C:\Windows\System32\drivers\etc

域名访问harbor

通过域名访问harbor,域名就是我们刚才配置的testharbor.com域名访

802b2a053c034dc4977b689761706b0b.png 因为我们的证书是自签的,不是第三方认证的,素以有安全性提示,点击继续就可以访问

225d98e891bf49c68e820623110c9ae1.png

到这里登录后就可以访问了 

e1f31ff23bc842709b7c4f3470c33821.png

 

 

 

GitHub 加速计划 / ha / harbor
23.24 K
4.68 K
下载
Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制
最近提交(Master分支:2 个月前 )
9e55afbb pull image from registry.goharbor.io instead of dockerhub Update testcase to support Docker Image Can Be Pulled With Credential Change gitlab project name when user changed. Update permissions count and permission count total Change webhook_endpoint_ui Signed-off-by: stonezdj <stone.zhang@broadcom.com> Co-authored-by: Wang Yan <wangyan@vmware.com> 9 天前
3dbfd422 Signed-off-by: wang yan <wangyan@vmware.com> 10 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐