部署Harbor并启用Https

下载安装包

harbor 版本 下载需要的在线或离线安装包

启用HTTPS

要配置HTTPS,必须创建SSL证书。可以使用由受信任的第三方CA签名的证书,也可以使用自签名证书。本节介绍如何使用OpenSSL创建CA以及如何使用CA签署服务器证书和客户端证书。也可以使用其他CA提供商。

生成证书颁发机构证书

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

  • 生成 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=example/OU=Personal/CN=harbor.com"
    -key ca.key
    -out ca.crt

生成服务器证书

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

  • 生成私钥

    openssl genrsa -out harbor.com.key 4096

  • 生成证书签名请求 (CSR)

    调整 -subj 选项中的值以反映组织信息。如果使用 FQDN 连接 Harbor 主机,则必须将其指定为通用名称 (CN) 属性,并在密钥和 CSR 文件名中使用它。

    openssl req -sha512 -new
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.com"
    -key harbor.com.key
    -out harbor.com.csr

  • Generate an x509 v3 extension file

    无论是使用完全限定域名(FQDN)还是IP地址连接到Harbor主机,都必须创建此文件,以便可以生成符合主题备用名称(SAN)和x509 v3扩展要求的Harbor主机证书。请替换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=harbor.com
    DNS.2=harbor
    DNS.3=hostname
    EOF

  • 使用 v3.ext 文件为您的 Harbor 主机生成证书

    将 CRS 和 CRT 文件名中的 harbor.com 替换为 Harbor 主机名

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

向 Harbor 和 Docker 提供证书

生成 ca.crt、harbor.com.crt 和 harbor.com.key 文件后,您必须将它们提供给 Harbor 和 Docker,并重新配置 Harbor 以使用它们

  • 将服务器证书和密钥复制到 Harbor 主机上的证书文件夹中

    cp harbor.com.crt /data/cert/
    cp harbor.com.key /data/cert/

  • 将 harbor.com.crt 转换为 harbor.com.cert,供 Docker 使用

    Docker 守护进程将 .crt 文件解释为 CA 证书,将 .cert 文件解释为客户端证书

    openssl x509 -inform PEM -in harbor.com.crt -out harbor.com.cert

  • 将服务器证书、密钥和 CA 文件复制到 Harbor 主机上的 Docker 证书文件夹中。必须先创建适当的文件夹

    cp harbor.com.cert /etc/docker/certs.d/harbor.com/
    cp harbor.com.key /etc/docker/certs.d/harbor.com/
    cp ca.crt /etc/docker/certs.d/harbor.com/

    如果将默认 nginx 端口 443 映射到其他端口,请创建文件夹 /etc/docker/certs.d/harbor.com:port 或 /etc/docker/certs.d/harbor_IP:port

  • 重启Docker

    systemctl restart docker

修改harbor.yml

  • 修改文件名

    mv harbor.yml.tmpl harbor.yml

  • 编辑harbor.yml

    Configuration file of Harbor

    The IP address or hostname to access admin UI and registry service.

    DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.

    hostname: harbor.com

    ......
    # https related config
    https:
    # https port for harbor, default is 443
    port: 443
    # The path of cert and key files for nginx
    certificate: /data/cert/harbor.com.crt
    private_key: /data/cert/harbor.com.key
    .......

安装docker-compose

部署Harbor

  • 运行脚本 prepare 以启用 HTTPS

    ./prepare

  • 运行脚本 install.sh 以安装Harbor

    ./instal.sh

本地登录

  • 配置hosts文件即可实现本地登录

    vi /etc/hosts

    添加如下内容 部署harbor的服务器地址 harbor域名

    192.168.0.3 harbor.com

  • 登录
    # 用户名密码已在harbor.yml中设置,默认为admin/harbor12345

    docker login harbor.com

    Username: admin
    Password:
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store

    Login Succeeded

  • 在同一网段其它节点上登录harbor

    • 将部署harbor的服务器上的证书复制到目的节点docker证书目录

      scp /etc/docker/certs.d/harbor.com/ca.crt root@node:/etc/docker/certs.d/harbor.com/

    • 在目的节点的hosts文件中添加 192.168.0.3 harbor.com

    • 登录

      docker login harbor.com

WEB登录

harbor安装后,默认的端口是443,访问 https://localhost:443 即可登录,若是云服务器则需要做端口转发

posted @ 2023-06-20 23:58  文十七  阅读(609)  评论(0)    收藏  举报