————————————————
https://blog.csdn.net/qq_17298387/article/details/53232341
https://www.jianshu.com/p/1daae319d5fc 【使用 OpenSSL 命令行管理证书】
cp /etc/pki/tls/openssl.cnf ./
sed -i 's|/etc/pki|.|g' openssl.cnf
sed -i '/req_extensions/s/^# //g' openssl.cnf
#use for openssl ca command
mkdir -p CA/{certs,crl,newcerts,private}
touch CA/index.txt
echo 00 > CA/serial
1. 生成ca.key并自签署生成根证书
openssl genrsa -des3 -out ca.key 2048
去掉中间的-des3可以生成不输密码的密钥. 这样是生成rsa私钥,des3算法,openssl格式,2048位强度。server.key是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。
openssl req \
-sha256 -new -x509 -days 3650 \
-key ca.key -out ca.crt \
-config openssl.cnf \
-subj "/C=CN/ST=GD/L=ShenZhen/O=ISPC Co.,LTD/OU=elite/CN=ca.ispc.com/[email protected]"
2. 生成ServerXX0 key和证书签名请求
openssl genrsa -out serverXX0.key 2048
openssl req \
-new -sha256 \
-key serverXX0.key -out serverXX0.csr \
-config openssl.cnf \
-subj "/C=CN/ST=GD/L=ShenZhen/O=ISPC Co.,LTD/OU=elite/CN=agee.ispc.com/[email protected]"
3. 查看签名请求文件信息
openssl req -text -in serverXX0.csr
检查 Signature Algorithm 是不是sha256WithRSAEncryptio
4. 使用自签署的CA,签署serverXX0.scr
4.1 使用ca伪命令签发证书
openssl ca \
-cert ca.crt -keyfile ca.key \
-md sha256 -days 3650 -extensions v3_req -config openssl.cnf \
-in serverXX0.csr -out serverXX0.crt
4.2 使用x509伪命令签发证书
openssl x509 -req \
-CA ca.crt -CAkey ca.key \
-sha256 -days 3650 -CAcreateserial -extensions v3_req -extfile openssl.cnf \
-in serverXX0.csr -out serverXX0.crt
5.查看证书
openssl x509 -text -in serverXX0.crt
6. 转换格式
6.1 转换成IIS可使用的pfx格式
openssl pkcs12 -export -out serverXX0.pfx -inkey serverXX0.key -in serverXX0.crt
6.2 转换成pem格式
openssl rsa -in serverXX0.key -out serverXX0-np.key
cat serverXX0-np.key serverXX0.crt > serverXX0.pem
6.3 转换成p12格式
openssl pkcs12 -export -out tsa.p12 -inkey tsa.key -in tsa.crt -chain -CAfile tsaroot.crt
# 从 PEM 转换到 DER:
$ openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER
# 从 DER 转换到 PEM:
$ openssl x509 -in cert.der -inform DER -out cert.pem -outform PEM
7. 定义openssl.cnf subjectAltName,增加下行,可实现证书给多个域名使用
7.1 取消req_extentions = v3_req这一行的注释
sed -i '/req_extensions/s/^# //g' openssl.cnf
7.2 在[ v3_req ]增加配置
subjectAltName = @alt_names
7.3 添加alt_names配置信息
[ alt_names ]
DNS.1 = *.ecmms.ispcmj
DNS.2 = *.ispcmj.com
DNS.3 = 928.ecmms.ispcmj
8. 创建crt格式的自签名证书
openssl req \
-sha256 -newkey rsa:2048 -nodes \
-keyout agsenterprise.key -out agsenterprise.crt \
-x509 -days 3650 \
-config openssl.cnf -extensions v3_req \
-subj "/C=CN/ST=GD/L=ShenZhen/O=ISPC Co.,LTD/OU=elite/CN=928.ecmms.ispcmj/[email protected]"
-----------agee.ispcmj.com
#1. 配置openssl.cnf文件
cp /etc/pki/tls/openssl.cnf openssl.cnf
cat <<EOF>> openssl.cnf
[ v3_req2 ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage=serverAuth,clientAuth
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = 930.ecmms.ispcmj
DNS.2 = *.ispcmj.com
EOF
#2. 生成ca.key并自签署生成根证书
openssl genrsa -out ca.key 4096
openssl req \
-sha512 -new -x509 -days 7300 \
-key ca.key -out ca.crt \
-config openssl.cnf \
-subj "/C=CN/ST=GD/L=ShenZhen/O=ispcmj Co.,LTD/OU=ispcmj/CN=ca.ispc/[email protected]"
#3. 生成ServerXX0 key和证书签名请求
openssl genrsa -out agee.ispcmj.com.key 2048
openssl req \
-new -sha256 \
-key agee.ispcmj.com.key -out agee.ispcmj.com.csr \
-config openssl.cnf \
-subj "/C=CN/ST=GD/L=ShenZhen/O=ispcmj Co.,LTD/OU=ispcmj/CN=agee.ispcmj.com/[email protected]"
#4. 使用自签署的CA,签署serverXX0.scr
使用x509伪命令签发证书
openssl x509 -req \
-CA ca.crt -CAkey ca.key \
-sha256 -days 3650 -CAcreateserial -extensions v3_req2 -extfile openssl.cnf \
-in agee.ispcmj.com.csr -out agee.ispcmj.com.crt