Harbor私有仓库添加SSL证书

摘要

自签证书使用起来比较复杂,需要在拉取镜像的机器配置自签证书。推荐申请免费证书或购买证书。

  • 生成 CA 证书私钥

bash

openssl genrsa -out ca.key 4096
  • 生成 CA 证书

bash

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

生成私钥

bash

openssl genrsa -out test.key 4096

生成证书签名请求 CSR

bash

openssl req \
-sha512 \
-new \
-subj "/C=CN/ST=Shanghai/L=Shanghai/O=example/OU=Personal/CN=192.168.10.2" \
-key test.key \
-out test.csr

生成 x509 v3 扩展

bash

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

创建 Harbor 访问证书

bash

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

将 crt 转换为 cert ,以供 Docker 使用

bash

openssl x509 -inform PEM -in test.crt -out test.cert
  • 生成私钥

bash

openssl genrsa -out harbor.bwcxtech.com.key 4096
  • 生成证书签名请求 CSR

bash

openssl req \
-sha512 \
-new \
-subj "/C=CN/ST=Shanghai/L=Shanghai/O=example/OU=Personal/CN=*.harbor.bwcxtech.com" \
-key harbor.bwcxtech.com.key \
-out harbor.bwcxtech.com.csr
  • 生成 x509 v3 扩展

bash

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.bwcxtech.com
DNS.2=*.harbor.bwcxtech.com
DNS.3=hostname
EOF
  • 创建 Harbor 访问证书

bash

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

这里365是证书有效期 推荐3650。这个大家随意。

  • 将 crt 转换为 cert ,以供 Docker 使用

bash

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

最终在目录下得到如下文件:

按以上步骤生成证书后,修改harbor.cfg

两处需要修改 修改之后先关闭harbor

bash

docker-compose stop

执行

bash

./prepare

更新一下配置文件 执行

bash

./install.sh

重新安装并启动

将拷贝证书至Docker的证书配置目录

bash

mkdir -p /etc/docker/certs.d/harbor.bwcxtech.com/
cp harbor.bwcxtech.com.cert /etc/docker/certs.d/harbor.bwcxtech.com/
cp harbor.bwcxtech.com.key /etc/docker/certs.d/harbor.bwcxtech.com/
cp ca.crt /etc/docker/certs.d/harbor.bwcxtech.com/

这里的harbor.bwcxtech.com目录一定要与服务保持一致,如果有端口,也应该用:连接带上。

只需执行上述第二步即可

相关内容