Openssl:从 pfx 生成的 cer 和密钥不匹配

Openssl:从 pfx 生成的 cer 和密钥不匹配

我正在尝试将 转换pfxcerkey格式,以便与 Nginx 一起使用它们。

我正在使用以下命令:

openssl pkcs12 -in input.pfx -out mycerts.cer -nokeys -clcerts

openssl pkcs12 -in input.pfx -out mycerts.key -nocerts -nodes

问题是cerkey文件不匹配!

openssl x509 -modulus -noout -in mycerts.crt | openssl md5

openssl rsa -modulus -noout -in mycerts.key | openssl md5

对于其他pix文件,该过程按预期工作。如何获取一组有效的证书以供 nginx 使用?

答案1

当我生成一个新的 pfx 文件并运行相同的命令时,我会得到一个有效的测试输出。

我采取的重现步骤:

# generate new x509 key/cert pair
openssl req -x509 -newkey rsa:4096 -keyout cert.key -out cert.pem -days 365

# validate key and cert
openssl rsa-modulus -noout -in cert.key | openssl md5
openssl x509 -modulus -noout -in cert.pem | openssl md5

# export key/cert pair to pkcs12
openssl pkcs12 -export -out cert.pfx -in cert.pem -inkey cert.key

# extract key and cert from pkcs12 file
openssl pkcs12 -in cert.pfx -out export.crt -nokeys -clcerts
openssl pkcs12 -in cert.pfx -out export.key -nocerts -nodes

# validate exported key and cert
openssl rsa -modulus -noout -in export.key | openssl md5
openssl x509 -modulus -noout -in export.pem | openssl md5

因此您的 PKCS12 输入文件一定是错误构建的。请与您的来源核实 PKCS12 文件是否有问题,或者如果您自己生成该文件,请检查该文件是否正确生成。

PKCS12 可以是密钥、证书和中间证书的复杂结构。我不认为文件结构禁止存储不匹配的证书和密钥,尽管 OpenSSL 在导出时确实禁止这样做:

$ openssl pkcs12 -export -out cert.pfx -in cert.pem -inkey other.key
No certificate matches private key

相关内容