自学内容网 自学内容网

harbor仓库安装和配置https证书

1 harbor安装(无https)

安装配置文件选项说明
data_volume: /soft/harbor/data/指定数据的存储目录
harbor_admin_password: wzy666harbor的admin用户密码
./install.sh --with-chartmuseumharbor-v2.7.4版本安装时用到

各个版本的项目地址为:https://github.com/goharbor/harbor/tags

v2.7.4版本下载地址为:https://github.com/goharbor/harbor/releases/download/v2.7.4/harbor-offline-installer-v2.7.4.tgz

1.设置安装目录为/soft/harbor,直接解压即可

tar xvf /tgz/harbor-offline-installer-v2.7.4.tgz -C /soft/

[root@harbor250soft]# ls /soft/harbor
common.sh  harbor.v2.7.4.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare

2.修改harbor的安装配置文件。注释掉https配置,在没有证书的情况下安装会报错

cp /soft/harbor/harbor.yml.tmpl /soft/harbor/harbor.yml
vim /soft/harbor/harbor.yml
 5 hostname: 10.0.0.250         # 设置harbor的主机名为本机IP

13 #https:    !!! 注释掉,在没有证书的情况下安装会报错
14 #  # https port for harbor, default is 443
15 #  port: 443
16 #  # The path of cert and key files for nginx
17 #  certificate: /your/certificate/path
18 #  private_key: /your/private/key/path 

34 harbor_admin_password: aa         # 管理员密码

53 data_volume: /soft/harbor/data    # 指定数据存放位置

3.执行安装脚本。前提是docker服务已经正常运行。看到最后一行的输出即安装成功

/soft/harbor/install.sh --with-chartmuseum

✔ ----Harbor has been installed and started successfully.----

4.登录访问http://10.00.250

账号密码:admin aa(配置文件里指定的密码)

在这里插入图片描述

5.如何备份数据,关闭docker进程,备份/soft/harbor/data目录即可;恢复的时候替换原目录

2 harbor安装(带https)

00 准备工作

1.解压安装包到/soft/harbor

2.创建证书目录到/soft/harbor

mkdir -pv /soft/harbor/certs/{ca,harbor-server,docker-client}

02 创建CA证书和harbor证书

说明:本次所有操作都在/soft/harbor/certs/目录下进行

CA证书

1.创建CA的私钥,生成一个 4096 位的 RSA 私钥,并将其保存到 ca/ca.key 文件中

openssl genrsa -out ca/ca.key 4096

2.基于自建的CA私钥创建CA证书(注意,证书签发的域名范围)

私钥用于签名自签名证书,确保CA证书的有效性和安全性

openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=zhiyong18.com" \
 -key ca/ca.key \
 -out ca/ca.crt

配置harbor证书

1.生成harbor服务器的私钥

openssl genrsa -out harbor-server/harbor.zhiyong18.com.key 4096

2.在有了harbor私钥的基础上,进行认证请求(csr文件),让自建CA认证

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

3.生成 x509 v3 的扩展文件用于认证

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

[alt_names]
DNS.1=harbor.zhiyong18.com
EOF

authorityKeyIdentifier=keyid,issuer

  • 定义了授权密钥标识符,以便识别证书的颁发者及其密钥。

basicConstraints=CA

  • 指示该证书不能用作证书颁发机构(CA)。

keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment

  • 定义证书的用途,包括数字签名、不可否认性、密钥加密和数据加密。

extendedKeyUsage = serverAuth

  • 限定证书的扩展用途为服务器身份验证。

subjectAltName = @alt_names

  • 指定证书的备用名称,将会在 [alt_names] 部分定义。

[alt_names]

  • 该部分定义了备用名称的详细信息。
  • DNS.1=harbor.zhiyong18.com
    • 指定备用 DNS 名称,证书还将支持 harbor.zhiyong18.com

总结:创建的 v3.ext 文件为生成证书时提供了扩展配置,确保证书适用于特定的用途和安全要求

4.基于 x509 v3 的扩展文件认证签发harbor server证书

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

5.查看证书

[root@harbor250certs]# tree /soft/harbor/certs/
/soft/harbor/certs/
├── ca
│   ├── ca.crt
│   └── ca.key
├── docker-client
└── harbor-server
    ├── harbor.zhiyong18.com.crt
    ├── harbor.zhiyong18.com.csr
    ├── harbor.zhiyong18.com.key
    └── v3.ext

所涉及的证书总结

ca/ca.key

  • 包含生成的 RSA 私钥,用于签署证书和证书签名请求(CSR)。

ca/ca.crt

  • 包含自签名的 X.509 证书,用于作为证书颁发机构(CA)的身份验证,供其他证书的验证使用。

harbor-server/harbor.zhiyong18.com.key

  • 包含为 harbor.zhiyong18.com 生成的 RSA 私钥,用于保护与该域名相关的通信。

harbor-server/harbor.zhiyong18.com.csr

  • 证书签名请求,包含公钥和主体信息,通常用于向 CA 申请证书。

harbor-server/v3.ext

  • 扩展配置文件,为生成的证书提供附加信息,例如密钥用途和备用名称。

harbor-server/harbor.zhiyong18.com.crt

  • 由 CA 签名的 X.509 证书,适用于 harbor.zhiyong18.com,可以用于 SSL/TLS 加密,确保与该域名的安全通信。

03 安装harbor

1.修改harbor.yml,只列出有改动的部分,其余部分和无https安装harbor一样

 5 hostname: harbor.zhiyong18.com

13 https:
14   # https port for harbor, default is 443
15   port: 443
16   # The path of cert and key files for nginx
17   certificate: /soft/harbor/certs/harbor-server/harbor.zhiyong18.com.crt
18   private_key: /soft/harbor/certs/harbor-server/harbor.zhiyong18.com.key

2.访问测试

在这里插入图片描述

04 docker登录harbor

生成docker客户端使用的证书

1.先进入目录/soft/harbor/certs

openssl x509 -inform PEM -in harbor-server/harbor.zhiyong18.com.crt \
-out docker-client/harbor.zhiyong18.com.cert
cp harbor-server/harbor.zhiyong18.com.key docker-client/
cp ca/ca.crt docker-client/

3.查看3个客户端相关证书

[root@harbor250certs]# ls docker-client/
ca.crt  harbor.zhiyong18.com.cert  harbor.zhiyong18.com.key

配置docker使用证书

mkdir -pv /etc/docker/certs.d/harbor.zhiyong18.com/
cp docker-client/* /etc/docker/certs.d/harbor.zhiyong18.com/

2.先添加hosts解析,再登录测试

[root@harbor250certs]# docker login -u admin -p aa harbor.zhiyong18.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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
[root@harbor250certs]# echo aa | docker login -u admin --password-stdin harbor.zhiyong18.com
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
 -u admin --password-stdin harbor.zhiyong18.com
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

原文地址:https://blog.csdn.net/qq_73797346/article/details/144335008

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!