如何生成作为有效 PEM 私钥的字符串?

How to generate a string that is valid PEM private key?

对于 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) returns 错误且不是有效资源。我假设 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)。