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