php - 如何生成有效的 PEM 私钥字符串?

标签 php openssl pem

对于 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/

相关文章:

php - codeigniter - 插入返回真,不修改数据库

php - 让javascript知道php服务器端登录/注销的推荐方法?

php - 为 oracle 查询设置时间限制

c++ - DH_free 精确行为

openssl - 如何将 X509 证书对象与另一个 .pem 扩展证书进行比较

c - 使用 OpenSSL libcrypt 加载未加密的 PEM 公钥

ios - 将 PEM 文件中的公钥加载到 NSData 中

php - 使 PHP 始终以 JSON 进行响应,即使在输出错误时也是如此

openssl - PyOpenSSL - 所有的加密功能在哪里?

linux - 如何使用 ssh-add 从代理中删除身份(pem 文件)