如何更换Harbor的证书:

在安装Kubernetes的过程中,由于一些用户会使用Ansible或其他自动化方式安装全套环境,
而不甚了解其内部原理时,一些组件的克隆和迁移会遇到麻烦。
比如当需要复制harbor用于其他环境时,会产生证书未授权的问题。
通过以下步骤,可以解决这个问题。

解决方案:

第一步:修改harbor证书签名请求文件harbor-csr.json:

{
  "CN": "harbor",
  "hosts": [
    "127.0.0.1",
    "10.25.40.xx",
    "harbor.xxxxxx.com"
  ],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "HangZhou",
      "L": "XS",
      "O": "k8s",
      "OU": "System"
    }
  ]
}
  • 一般情况下,harbor证书需要客户端认证,因此需要在签名请求中替换掉hosts中的地址。

第二步:重新生成证书文件:

/opt/kube/bin/cfssl gencert \
-ca=/etc/kubernetes/ssl/ca.pem \
-ca-key=/etc/kubernetes/ssl/ca-key.pem \
-config=/etc/kubernetes/ssl/ca-config.json \
-profile=kubernetes harbor-csr.json | /opt/kube/bin/cfssljson -bare harbor

第三步:关闭harbor:

docker-compose stop

第四步:修改harbor的配置文件:

hostname = 10.25.40.xx
ssl_cert = /etc/kubernetes/ssl/harbor.pem
ssl_cert_key = /etc/kubernetes/ssl/harbor-key.pem
  • hostname,修改为新的harbor的ip地址。
  • ssl_cert和ssl_cert_key,如果在其他路径生成了新的证书,则修改;反之不用修改。

第五步:重新载入harbor配置文件:

./prepare

第六步:启动harbor:

docker-compose stop