WindowsCA证书服务(五)为LINUX申请SAN证书 高级自定义SAN证书 P12证书 pfx证书
简介
本文脚本在fedora 39 Server Edition下测试通过。
我们不止windows的IIS呀,还有nginx,apache等等服务器,这些服务器不止要证书,还要私钥呢。
还有一些东东要pfx(p12)格式的证书,包含证书链和私钥的单文件证书。比如说深信服的防火墙。
openssl
经过一番搜索,这次真得脱离windows了。
即使我使用第三方软件,让你在windows下生成了密钥对,还得openssl生成了证书请求,最后还得 用openssl来合成p12。
生成密钥命令
openssl genrsa -out ./server.pem 4096
检查申请命令
openssl req -noout -text -in server.csr
检查证书命令
openssl x509 -text -noout -in server.crt
密钥对
在当前目录生成一个名为server.pem的私钥
openssl genrsa -out ./server.pem 4096
证书请求
有点长,写shell脚本吧。
#!/bin/bash
# 生成私钥
openssl genrsa -out ./server.pem 4096
# 配置证书信息
C=cn
ST=HeNan
L=ZhengZhhou
O=FreeNet
CAOU=CA
CACN=ca.jack.local
SERVERCN=test.jack.local
emailAddress=test@sina.com
#创建证书请求
openssl req -new -sha256 -key ./server.pem \
-subj "/C=${C}/ST=${ST}/L=${L}/O=${O}/OU=${CAOU}/CN=${SERVERCN}/emailAddress=${emailAddress}" \
-extensions v3_req \
-config <(cat /etc/pki/tls/openssl.cnf \
<(printf "[req]\nreq_extensions = req_ext\n[req_ext]\nsubjectAltName=DNS:${SERVERCN}")) \
-out server.csr
生成私钥和证书申请
检查证书请求
[root@design testCert]# openssl req -noout -text -in server.csr
Certificate Request:
Data:
Version: 1 (0x0)
Subject: C = cn, ST = HeNan, L = ZhengZhhou, O = FreeNet, OU = CA, CN = test.jack.local, emailAddress = test@sina.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (4096 bit)
Modulus:
00:97:98:2c:69:26:87:33:05:e6:7a:9f:f4:e1:8b:
……………………………………………………………………………………………………………………
d9:20:15
Exponent: 65537 (0x10001)
Attributes:
Requested Extensions:
X509v3 Subject Alternative Name:
DNS:test.jack.local
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
20:84:0c:c5:66:15:12:26:33:6d:a7:c4:5a:87:07:64:16:18:
………………………………………………………………………………………………………………………………………………
c2:07:e8:5f:79:c3:ba:b8
签发检查证书
去CA签发一下再看看。
虽然能在IIS导入不报错,但是随便刷新,换页面再回来,证书就没了,因为它只是证书不含私钥。
windows检查下证书。
看到了使用者可选名称
传回linux,也能看到x509v3
配置NGINX证书
server { listen 443 ssl ; listen [::]:443 ssl ; include restrict_locally; include conf.d/*.locations; server_name ***.jack****.***; ssl_certificate /etc/nginx/conf.d/***.jack****.***.crt; ssl_certificate_key /etc/nginx/conf.d/***.jack****.***.key; ssl_session_timeout 5m; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; }
合成p12证书
openssl pkcs12 -export -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12
本例命令
in 证书, inkey,私钥,out,输出文件。
openssl pkcs12 -export -in certnew.cer -inkey server.pem -out server.p12
输入两次密码即可生成p12证书,密码可以为空。
根据后面的实验,加个name参数,显示名称
导入P12证书
我这条件,就IIS导入一下吧。
绑定测试