在申请SSL证书之前,需要先生成CSR文件(CSR, Cerificate Signing Request, 证书请求文件)。CSR是公钥证书的原始文件,它包含了服务器信息和单位信息,需要提交给CA认证中心。很多网站可以帮我们生成CSR文件,图形化的操作也非常方便,但毕竟不是我们本地生成,恐有key泄露的风险。为此,我们使用 wsl2 (Linux) 子系统中的 OpenSSL 工具生成该文件。
读懂本笔记,你可能需要在技能树中点亮以下技能:
- Linux系统操作基础
可选的两种加密算法
- RSA (3072-bit, 4096-bit)
- ECDSA (Elliptic Curve Digital Signature Algorithm) (ECC, 椭圆曲线加密)
RSA
下面的 OpenSSL 命令将生成一个 3072 位的 RSA 私钥和 CSR:
RSA 推荐使用 4096-bit
最低为 3072-bit
$ openssl req -newkey rsa:3072 -keyout PRIVATEKEY.key -out MYCSR.csr
ECDSA (ECC 算法)
有两种等效命令推荐 方案一
方案一
使用以下命令在当前目录生成一个名为 PRIVATEKEY.key
的私钥文件,其加密方式为 prime256v1
。
$ openssl ecparam -out PRIVATEKEY.key -name prime256v1 -genkey
可选参数如果需要更高要求的加密强度,可以将上面的 prime256v1
替换成 secp384r1
。
可以使用 openssl ecparam -list_curves
查看支持的密码列表
使用以下命令利用上面生成的私钥文件 PRIVATEKEY.key
生成一个CSR文件名为: MYCSR.csr
。
$ openssl req -new -key PRIVATEKEY.key -out MYCSR.csr
方案二
此 OpenSSL 命令将为 256 位 ECDSA 密钥生成参数文件:
$ openssl genpkey -genparam -algorithm ec -pkeyopt ec_paramgen_curve:P-256 -out ECPARAM.pem
-genparam
生成参数文件而不是私钥。 您也可以生成私钥,但在生成密钥和 CSR 时使用参数文件可确保系统提示您输入密码。-algorithm ec
指定椭圆曲线算法 (ECC)。-pkeyopt ec_paramgen_curve:P-256
选择 256 位曲线。如果你需要 384 位曲线,请将冒号后的部分更改为 P-384
在生成 CSR 时使用指定的参数文件:
$ openssl req -newkey ec:ECPARAM.pem -keyout PRIVATEKEY.key -out MYCSR.csr
如果需要可以合并命令
$ openssl req -newkey ec:<(openssl genpkey -genparam -algorithm ec -pkeyopt ec_paramgen_curve:P-256) -keyout PRIVATEKEY.key -out MYCSR.csr
输入证书所需字段
无论是 ECC算法
还是 RSA算法
, 生成CSR文件的过程中,都要求我们输入一些信息。我们只需要按照提示输入信息即可完成生成
Country Name (2 letter code) [AU]:CN #国家 ;两个字母表示。 State or Province Name (full name) [Some-State]:Guizhou #州或省份;输入全称 Locality Name (eg, city) []:Guiyang #所在城市 Organization Name (eg, company) [Internet Widgits Pty Ltd]:AceSheep #组织名称, 个人申请填写真实姓名拼音 Organizational Unit Name (eg, section) []:IT #组织部门名称;比如IT,可留空 Common Name (e.g. server FQDN or YOUR name) []:AceSheep #简称FQHN;填写单域名或泛域名,此处必填。个人申请填写真实姓名拼音 Email Address []:xxx@example.com # 邮箱地址 可为空 Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: #可选, 最好留空 An optional company name []: #可选公司名;可留空
按照提示输入完需要的信息后,key文件 和 csr文件 会于当前所在目录产生。这时我们就可以把产生的CSR文件提交给CA了。私钥(key文件)非常重要,切记保存好,不能泄露。
查看 CSR 文件信息
openssl req -in MYCSR.csr -noout -text
证书供应商签发证书后转格式
将 .crt
转换为 .pem
openssl x509 -inform DER -outform PEM -in MYCERT.crt -out MYCERT.pem
合并私钥和证书文件 .pfx
$ openssl pkcs12 -export -inkey PRIVATEKEY.key -in MYCERT.pem -out MYCERTIFICATE.pfx Enter pass phrase for PRIVATEKEY.key: Enter Export Password: Verifying - Enter Export Password:
把导出的 .pfx
在导入 Windows. 在证书管理器中确认证书上是否有私钥提示.certmgr.msc
-> Personal(个人)
如果有私钥提示说明导入成功, 接下来就可以开始代码签名了!
原文
Manually Generate a Certificate Signing Request (CSR) Using OpenSSL
OpenSSL-使用OpenSSL生成CSR文件
How to get .pem file from .key and .crt files?
How to Verify Your Code Signing Certificate Is Installed (Windows)