一、生成自建CA根证书
cd /etc/pki/CA/
1.1 生成CA私钥
openssl genrsa -out myCA.key 2048
1.2 生成CA根证书,有效期10年(将myCA.crt导出在需要访问Web服务的客户端安装,证书存储位置指定为“受信任的根证书颁发机构”)
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 3650 -out myCA.crt \
-subj "/C=CN/ST=Hubei/L=Wuhan/O=Wckj/OU=Whwckj/CN=Whwckj Root CA" \
-addext "basicConstraints=critical,CA:TRUE"
Openssl版本低于1.1.1时会出现unknown option -addext,解决方案:
cat <<EOF > myssl.cnf
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
prompt = no
[req_distinguished_name]
C = CN
ST = Hubei
L = Wuhan
O = Wckj
OU = Whwckj
CN = Whwckj Root CA
[v3_ca]
basicConstraints = critical, CA:TRUE
EOF
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 3650 -out myCA.crt -config myssl.cnf -extensions v3_ca
二、生成Web服务器证书
mkdir /root/ssl
cd /root/ssl
2.1 生成服务器私钥
openssl genrsa -out server.key 2048
2.2 生成证书签名请求(CSR)并包含SAN
openssl req -new -key server.key -out server.csr \
-subj "/C=CN/ST=Hubei/O=Wckj/OU=Whwckj/CN=whwckj.com" \
-addext "subjectAltName=DNS:whwckj.com,DNS:*.whwckj.com,IP:192.168.2.92"
### DNS后面改成实际对应Web服务的域名
### IP后面改成实际对应Web服务的IP地址
Openssl版本低于1.1.1时会出现unknown option -addext,解决方案:
cat <<EOF > server.cnf
[ req ]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[ req_distinguished_name ]
C = CN
ST = Hubei
O = wckj
OU = whwckj
CN = whwckj.com
[ v3_req ]
subjectAltName = DNS:whwckj.com, DNS:*.whwckj.com, IP:192.168.2.92
EOF
openssl req -new -key server.key -out server.csr -config server.cnf -extensions v3_req
2.3 使用CA签署证书(有效期2年)
openssl x509 -req -in server.csr -CA /etc/pki/CA/myCA.crt -CAkey /etc/pki/CA/myCA.key -CAcreateserial \
-out server.crt -days 730 -sha256 \
-extfile <(echo "subjectAltName=DNS:whwckj.com,DNS:*.whwckj.com,IP:192.168.2.92")
### DNS后面改成实际对应Web服务的域名
### IP后面改成实际对应Web服务的IP地址
2.4 查看证书信息
openssl x509 -in server.crt -text -noout
2.5给windows server服务器的IIS服务颁发证书
openssl pkcs12 -macalg SHA1 -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -export -out server45.pfx -inkey server.key -in server.crt -certfile /root/ssl/myCA.crt
三、将server.key和server.csr导出上传至需要配置https的服务器上,作为SSL证书。