在生产环境中,您应该从CA获得证书。在测试或开发环境中,您可以生成自己的CA。要生成CA证书
生成CA证书私钥
openssl genrsa -out ca.key 4096
生成CA证书
调整-subj
选项中的值以反映您的组织。如果使用FQDN[(Fully Qualified Domain Name)全限定域名]连接Harbor主机,则必须将其指定为通用名称(CN
)属性
openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=local.harbor.com" -key ca.key -out ca.crt
生成服务器证书
1、生成私钥
openssl genrsa -out local.harbor.com.key 4096
2、生成证书签名请求(CSR)
调整-subj
选项中的值以反映您的组织。如果使用FQDN连接Harbor主机,则必须将其指定为通用名称(CN
)属性,并在密钥和CSR文件名中使用它
openssl req -sha512 -new -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=local.harbor.com" -key local.harbor.com.key -out local.harbor.com.csr
3、生成一个x509 v3扩展文件
无论您使用FQDN还是IP地址连接到Harbor主机,都必须创建此文件,以便可以为您的Harbor主机生成符合主题备用名称(SAN)和x509 v3的证书扩展要求。替换DNS
条目以反映您的域
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=local.harbor.com
DNS.2=local.harbor
DNS.3=harbor
EOF
如果使用ip,需要使用如下方式进行创建
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = IP:172.17.0.10
EOF
4、 使用该v3.ext
文件为您的Harbor主机生成证书
openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in local.harbor.com.csr -out local.harbor.com.crt
交互式CA证书创建
创建CA证书
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 3650 -out ca.crt
生成证书签名请求
openssl req -newkey rsa:4096 -nodes -sha256 -keyout 172.17.0.10.key -out 172.17.0.10.csr
生成注册表主机的证书
echo subjectAltName = IP:172.17.0.10 > extfile.cnf
openssl x509 -req -days 3650 -in 172.17.0.10.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out 172.17.0.10.crt
如何前面执行的交互式输入的为域名,那最后两步可以替换为下面
openssl x509 -req -days 3650 -in local.harbor.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out local.harbor.com.crt