当前位置: 首页 > 工具软件 > san-library > 使用案例 >

docker20.10.8及以上版本安装registry镜像库存在san ssl 证书

海新霁
2023-12-01

问题

Get “https://dockerhub.kubekey.local/v2/”: x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0
分析

由于docker20.10.8及以上版本编译使用的go版本过高(>1.15.1)。go 1.15版本开始废弃CommonName,需要使用SAN证书

以下是registry服务端的服务器生成SAN证书的方式

mkdir -p /mnt/registry/certs
cd /mnt/registry/certs
cp /etc/pki/tls/openssl.cnf /mnt/registry/certs

修改 操作目录的openssl.cnf
vi /mnt/registry/certs/openssl.cnf
修改如下 (去掉144 行的# 添加 145 146 行 146 可以写多个域名 )
144 req_extensions = v3_req # The extensions to add to a certificate request
145 [ alt_names ]
146 DNS.1 = dockerhub.kubekey.local

生成默认 ca
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -subj “/CN=example.ca.com” -days 5000 -out ca.crt
生成证书请求
openssl req -new -sha256
-key ca.key
-subj “/C=CN/ST=Beijing/L=Beijing/O=UnitedStack/OU=Devops/CN=dockerhub.kubekey.local”
-reqexts SAN
-config <(cat ./openssl.cnf
<(printf “[SAN]\nsubjectAltName=DNS:dockerhub.kubekey.local”))
-out domain.csr
生成证书
openssl x509 -req -days 365000
-in domain.csr -CA ca.crt -CAkey ca.key -CAcreateserial
-extfile <(printf “subjectAltName=DNS:dockerhub.kubekey.local”)
-out domain.crt

 类似资料: