【问题标题】:How to generate a string that is valid PEM private key?如何生成有效 PEM 私钥的字符串?
【发布时间】:2016-06-24 15:48:35
【问题描述】:

对于 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 字符串。我做错了什么? (我通过谷歌找到了这个:http://www.cryptosys.net/pki/manpki/pki_pemstring.html

【问题讨论】:

  • 尝试使用openssl_pkey_export
  • 这是什么:$privateKey .='\n'.base64_encodehash(('sha256','foobar')); 它的私钥是什么,您要将其加载到什么中?此外,行长也有限制。 OpenSSL 强制执行早期 RFC 之一的长度。查看早期的邮件和隐私增强邮件 RFC。
  • 供 PHP 加密字符串。是否有描述 PEM 格式的网站?

标签: php openssl pem


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-02-07
    • 2013-08-24
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 2014-01-04
    相关资源
    最近更新 更多