PKCS12 文件和私钥 - PHP

PKCS12 file and Private key - PHP

我正在使用 phpseclib 创建一个 X509 证书,所有这些似乎都很好。创建证书后,我使用与我的证书关联的私钥将其保存为 PHP 中的 pkcs12 文件。但是,一旦我阅读了该文件,我得到的私钥就不同了。密钥不应该是一样的吗?

例如,假设我打电话给:

openssl_pkcs12_export_to_file($cert , $write_loc, $priv_key , $pass);

效果很好,现在当我读取文件时:

openssl_pkcs12_read($write_loc, $certs, $pass);

$certs['pkey'] 中的输出与我传递给上面 export_to_file 方法的 $priv_key 不同。

它们肯定是一样的,还是我混淆了两个完全不同的东西?

谢谢!

我认为在

中解释了发生的事情

基本上,您使用的密钥以 -----BEGIN RSA PRIVATE KEY----- 开头,而您要返回的密钥以 -----BEGIN PRIVATE KEY----- 开头。

前者是PKCS1格式的私钥,后者是PKCS8格式的私钥。后者将私钥类型嵌入到 base64 编码数据本身中,而前者将私钥类型嵌入到人类可读字符串中。

某些版本的 PHP / OpenSSL 输出 PKCS8 密钥,而其他版本输出 PKCS1 密钥..