前提知识

什么是 CSR

[[CSR]] (Certificate Signing Request),即证书签名请求文件,证书申请人在申请数字证书时由 CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请人只需要把 CSR 文件提交给证书颁发机构后,证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。

申请人需要生成 CSR 文件并提交给证书颁发机构(CA)。CSR 包含了用于签发证书的公钥、用于辨识的名称信息(Distinguished Name)(例如域名)、真实性和完整性保护(例如数字签名),通常从 Web 服务器生成 CSR,同时创建加解密的公钥私钥对。

如何产生 CSR 文件

要生成 CSR 文件,需要在 Linux 系统中,使用 OpenSSL 命令行工具。

然后执行以下命令,即可生成 CSR 文件。

openssl req -new -nodes -sha256 -newkey rsa:2048 -keyout $Key_File -out $OpenSSL_CSR
  • new:指定生成一个新的 CSR 文件。
  • nodes:指定密钥文件不被加密。
  • sha256:指定摘要算法。
  • newkey rsa:2048:指定密钥类型和长度。
  • $Key_File:密钥文件名称。
  • $OpenSSL_CSR:加密后文件的存放路径。

根据系统返回的提示,输入 CSR 文件所需的信息。以下是关于提示的说明:

  • Country Name(2 letter code):JP,申请单位所属国家,只能是两个字母的国家码。例如,中国填写为 CN。
  • State or Province Name(full name)[Some-State]: Tokyo,州名或省份名称,可以是中文或英文。
  • Locality Name(eg, city)[]: Shinagawa,城市名称,可以是中文或英文。
  • Organization Name(eg, company) [Internet Widgits Pty Ltd]:公司名称,可以是中文或英文。
  • Organizational Unit Name:部门名称,可以是中文或英文。
  • Common Name:申请 SSL 证书的具体网站域名。
  • Email Address:可选择不输入。
  • Challenge Password:可选择不输入。

按照命令提示输入相应内容后,即可在当前目录下获取密钥文件和 CSR 文件。

什么是 pem

[[PEM]] (Privacy Enhanced Mail) 格式是一种用于存储和传输密钥数据的常见格式,通常用于包含加密证书、密钥、数字证书和其他安全相关信息。

PEM 格式的数据通常以文本形式编码,但可以包含二进制数据。PEM 格式的文件通常使用扩展名为 .pem.crt.cer.key.p12。用户可以使用任何文本编辑器打开,但通常更推荐使用 OpenSSL 或其他密码学工具集进行处理。

什么是 pfx

[[PFX]] 是 Personal Information Exchange 的缩写,一种用于存储和传输数字证书和私钥的文件格式。它是一种二进制格式,使用 PKCS#12 标准来存储数据。

PFX 文件通常以 .pfx 或者 .p12 扩展名结尾。

PFX 文件和 PEM 文件的主要区别在于,PFX 文件包含私钥,而 PEM 文件仅包含公钥。这使得 PFX 文件比 PEM 文件更安全一些,因为私钥只能由拥有密码的用户访问。

从 DigiCert 获取证书的流程

从 [[DigiCert]] 公司获取证书的流程:

  • 生成 [[CSR]] 文件,提供给 DigiCert
  • 等待 DigiCert 发行证书,获取 DigiCert 发行证书
  • 将产生 CSR 文件的本地私钥和 DigiCert 发行的证书合并
  • 生成 pem 或者 PFX 上传到 [[Azure Key Vault]] 中

从 DigiCert 官网获取证书文件,然后使用命令行工具生成 PFX 文件。

利用 OpenSSL 工具将私钥和证书文件合成 PEM 以及 PFX 文件。

openssl pkcs12 -export -inkey private.key -in certificate.crt -out certificate.pem

合成 PFX 文件

openssl pkcs12 -export -inkey private.key -in certificate.crt -out certificate.pfx