我正在使用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不同。
当然他们必须是一样的,或者我把两件完全不同的东西混在一起?
谢谢!
答案 0 :(得分:2)
基本上,您使用的是以-----BEGIN RSA PRIVATE KEY-----
开头的密钥,并且您使用-----BEGIN PRIVATE KEY-----
开始重新获取密钥。
前者是PKCS1格式的私钥,后者是PKCS8格式的私钥。后者具有嵌入base64编码数据本身的私钥类型,而前者具有嵌入在人类可读字符串中的私钥类型。
某些版本的PHP / OpenSSL输出PKCS8密钥,其他版本输出PKCS1密钥..