在前面harbor搭建docker私有镜像仓库 中使用了默认的http端口,但生产环境中并不提倡使用不安全的http服务,建议使用https保证安全性,这里根据官方推荐的openssl方法来自签证书,但浏览器并不认可自签证书的安全性,所以浏览器需要添加颁发的证书到浏览器中。同时,也可使用官方推荐的ACME获取免费的SSL证书。
一、自签证书 1、生成CA证书 1 2 3 4 5 6 7 8 mkdir /Users/bulubulu/docker/cert openssl genrsa -out ca.key 4096 openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.test.com" \ -key ca.key \ -out ca.crt
2、生成服务器证书 认证证书通常包含证书请求.csr
文件、签名证书.crt
文件及私钥.key
文件,我这里harbor配置的hostname是harbor.test.com,所以最终需要生成harbor.test.com.crt、harbor.test.com.csr、harbor.test.com.key
三个文件。
key:证书私钥,一般利用rsa等算法生成
csr:证书请求文件,利用证书私钥生成证书请求文件,该文件包含了服务器和地址等信息,申请人将该文件提交给CA机构,CA机构会根据该文件所携带的私钥信息来进行签名生成证书
crt:证书文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 openssl genrsa -out harbor.test.com.key 4096 openssl req -sha512 -new \ -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.test.com" \ -key harbor.test.com.key \ -out harbor.test.com.csr 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.test.com DNS.2=127.0.0.1 EOF openssl x509 -req -sha512 -days 3650 \ -extfile v3.ext \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -in harbor.test.com.csr \ -out harbor.test.com.crt
3、harbor配置修改 1 2 3 4 5 6 7 8 9 vim harbor.yml hostname: harbor.test.com https: port: 443 certificate: /Users/bulubulu/docker/cert/harbor.test.com.crt private_key: /Users/bulubulu/docker/cert/harbor.test.com.key
4、harbor重新导入配置并启动 1 2 3 4 docker-compose down -v ./prepare docker-compose up -d
5、浏览器访问测试 在浏览器通过所设置域名及ip分别进行测试