使用 OpenSSL 手动生成 CSR 文件 | Manually Generate CSR

标签: none

在申请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, 椭圆曲线加密)

RSAvECC_keysize-1024x281.png

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(个人)
如果有私钥提示说明导入成功, 接下来就可以开始代码签名了!

InternetExplorer5.jpg

原文
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)


扫描二维码,在手机上阅读!

添加新评论