0%

IIS证书转Nginx证书

IIS证书转Nginx证书

要求:CA服务器、OpenSSL

创建证书请求文件

新建req.inf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[Version]
Signature=$Windows NT$

[NewRequest]
Subject = CN=Server2019
KeySpec = 1
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
KeyUsage = 0xa0
RequestType = PKCS10

[RequestAttributes]
CertificateTemplate = WebServer

[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=localhost&"
_continue_ = "IPAddress=192.168.242.171"

CN:域名

DNS:域名

IPAddress:服务器地址(纯内网访问填内网地址,外部访问填公网地址)

管理员模式CMD执行certreq命令

1
certreq -new C:\Users\server2019\Desktop\req.inf C:\Users\server2019\Desktop\req_new.txt

提交证书申请

打开req_new.txt,访问CA服务器的Web界面(用域管理员账户登录)

选择“申请证书” –> “高级证书申请”,粘贴req_new.txt中的内容,证书模板选择Web服务器,点击提交。下载证书链,获得certnew.p7b

导出带私钥的PFX证书

打开p7b文件,安装证书

“本地计算机” –> “下一页” –> “将所有的证书都放入下列存储” –> “浏览” –> “受信任的根证书颁发机构” –> “下一页” –> “完成”

WIN + R 打开mmc,“文件” –> “添加管理单元” –> “证书” –> “添加” –> “计算机账户” –> “下一页” –> “本地计算机” –> “完成”

找到受信任的根证书颁发机构 – 证书 ,找到刚才导入的证书,证书图标上带小钥匙,说明带密钥

右键证书 – 所有任务 – 导出 – 下一页 – 是,导出私钥 – 下一页 – 不做修改,直接下一页 – 勾选密码 – 设置一个密码 – 加密:AES-256-SHA256 – 确定 – 选择一个保存的位置 – 下一页 – 完成

转换证书

非常不建议用网上的什么在线转换证书,很垃圾。大部分只能导出半截,要么只能私钥,要么只能公钥。

进入安装好的OpenSSL目录,默认为C:\Program Files\OpenSSL-Win64\bin,在这个目录打开cmd

输入这3条命令用于生成服务器证书、CA证书、私钥(生成的文件在bin目录,要改的话自己指定-out的目录)

1
2
3
openssl pkcs12 -in C:\Users\Administrator\Desktop\ssltest.cn.pfx -nokeys -clcerts -out ssltest.pem
openssl pkcs12 -in C:\Users\Administrator\Desktop\ssltest.cn.pfx -nokeys -cacerts -out ca.pem
openssl pkcs12 -in C:\Users\Administrator\Desktop\ssltest.cn.pfx -nocerts -nodes -out ssltest.key

Enter Import Password:(之前导出PFX时输入的密码)

Tips:私钥要生成未加密的,不然Web服务无法用。如果要在网络上传输私钥,用加密的私钥。密码单独以安全的方式发送给对方,对方用下面的命令解密密钥

1
openssl rsa -in ssltest_enc.key -out ssltest.key

校验密钥哈希值的命令

1
openssl rsa -in ssltest.key -outform DER | openssl dgst -sha256

验证

需要安装CA证书,否则还是会显示连接不安全(即客户端要认为颁发者是可信的)如果没有装,访问CA服务器Web界面下载CA证书,安装到计算机的受信任的根证书颁发机构。域环境CA服务器会自动下发证书到域内所有计算机。