对于 PEM 私有(private)证书,我假设您需要这样的字符串:
-----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)
最佳答案
不同类型的对象有不同的 PEM 格式。从表面上看,PEM 只是包含在 BEGIN 和 END 标记内的 Base 64 编码数据。以“BEGIN PRIVATE KEY”标记开头的 PEM 文件包含符合 PKCS#8 标准的 Base64 编码数据。特别请参阅 RFC5208 (https://www.rfc-editor.org/rfc/rfc5208) 的第 5 节。通常,您不会自己从头开始创建这些文件,您会使用某种库或工具来为您创建这些文件(例如 OpenSSL)。
关于php - 如何生成有效的 PEM 私钥字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38017340/