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 密钥..
我正在使用 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 密钥..