使用OpenSSL将P7B转换为PFX

时间:2020-03-21 11:43:09  来源:igfitidea点击:

在IIS Web服务器上更新SSL证书时,每次必须做的事情。

格式说明

P7B(PKCS#7)

P7B文件是一个文本文件,其中包含证书和链式证书,但不包含私钥。

PFX(PKCS#12)

PFX文件是一种二进制格式的文件,用于将服务器证书,任何中间证书和私钥存储在一个可加密文件中。

将P7B转换为PFX

请注意,为了进行转换,我们必须同时拥有证书cert.p7b文件和私钥cert.key文件。

$openssl pkcs7 -print_certs -in cert.p7b -out cert.cer

从pkcs7的手册页中:

  • -print_certs:打印出文件中包含的所有证书。
  • -in:指定要读取的输入文件名。
  • -out:指定要写入的输出文件名。
$openssl pkcs12 -export -in cert.cer -inkey cert.key -out cert.pfx

从pkcs12的手册页中:

  • -export:指定将创建PKCS#12文件。
  • -in:指定要解析的PKCS#12文件的文件名。
  • -inkey:指定要从中读取私钥的文件。
  • -out:指定要写入PKCS#12文件的文件名。

使用OpenSSL创建自签名PFX

2048位RSA自签名证书,有效期5年:

$openssl req -new -x509 -days 1825 -sha256 -nodes -out cert.crt \
-keyout cert.key

从openssl手册页:

  • 要求:创建和处理证书申请。
  • -new:生成一个新的证书请求。
  • -x509:输出自签名证书而不是证书请求。
  • -days:使用-x509选项时,它指定认证证书的天数。
  • -sha256:指定用于签署请求的消息摘要。
  • -nodes:私钥不会被加密。
  • -out:指定要写入的输出文件名。
  • -keyout:将新创建的私钥写入的文件名。
$openssl pkcs12 -export -in cert.crt -inkey cert.key -out cert.pfx

生成新的私钥和证书签名请求(CSR)

$openssl req -new -newkey rsa:2048 -sha256 -nodes -out cert.csr \
-keyout cert.key

-newkey选项创建一个新的证书请求和一个新的私钥。

从PFX创建RSA私钥

$openssl pkcs12 -in cert.pfx -nocerts -nodes | openssl rsa -out rsaprivkey.pem