如何生成一个有效PEM私钥的字符串?

时间:2016-06-24 15:48:36

标签: php openssl pem

对于PEM私有证书,我假设你需要一个这样的字符串:

-----BEGIN PRIVATE KEY-----
YzNhYjhmZjEzNzIwZThhZDkwNDdkZDM5NDY2YjNjODk3NGU1OTJjMmZhMzgzZDRhMzk2MDcxNGNhZWYwYzRmMg==
-----END PRIVATE KEY-----

所以我做的是:

$privateKey = '-----BEGIN PRIVATE KEY-----';
$privateKey .='\n'.base64_encodehash(('sha256','foobar'));
$privateKey .='\n-----END PRIVATE KEY-----';

但是openssl_pkey_get_private($ privateKey)返回false而不是有效资源。我假设PEM只是base64字符串。我做错了什么? (我是通过Google发现的:http://www.cryptosys.net/pki/manpki/pki_pemstring.html

1 个答案:

答案 0 :(得分:1)

不同类型的对象有不同的PEM格式。在它的表面上,PEM只是包含在BEGIN和END标记内的基本64位编码数据。以" BEGIN PRIVATE KEY"开头的PEM文件标记包含符合PKCS#8标准的base64编码数据。特别参见RFC5208的第5节(https://tools.ietf.org/html/rfc5208)。通常你不会自己创建这些文件,你会使用某种库或工具来为你做这些(例如OpenSSL)。