gpt4 book ai didi

php - openssl_pkey_get_private 返回 false

转载 作者:行者123 更新时间:2023-12-03 22:13:26 26 4
gpt4 key购买 nike

我试图验证一些私钥,但 php 方法 openssl_pkey_get_private() 始终返回 .
openssl_error_string() 正在返回:

错误:0906D06C:PEM 例程:PEM_read_bio:无起始行

    $return = openssl_pkey_get_private($path.'_priKEY.pem');
if ($return === false) {
var_dump(openssl_error_string());
}

尝试使用从 .pfx 文件中提取的私钥,其他从 .p12 文件中提取的私钥,甚至是自生成的 key (使用 openssl)。
已经尝试过“RSA PRIVATE KEY”、“ENCRYPTED PRIVATE KEY”和“PRIVATE KEY”。没有什么改变。

私钥内容:
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0B
[......................]
Wxdadnf7MB7DicckIZTKVy1L
-----END PRIVATE KEY-----

最佳答案

您似乎没有为文件路径提供正确的格式。确保它以 file:// 开头, 后跟绝对或相对路径。是的,如果您选择绝对路径,那么文件名的路径将类似于 file:///absolute/path/to/keyfile.pem , 以三个斜线开头。对于相对路径,它将是 file://relative/path/to/keyfile.pem .

根据documentation for openssl_pkey_get_private() ,您可以将 key 作为文件路径提供,也可以作为包含实际 key 的字符串提供。仅当该值以 file:// 开头时,它被解释为文件的路径 (URI)。否则,该值将被解释为包含 PEM 编码 key 的字符串。在后一种情况下,它需要一个它识别为 PEM 的起始行,例如 -----BEGIN PRIVATE KEY----- .这就是为什么您会收到该错误消息的原因,您的论点既不以 file:// 开头也没有 PEM 起跑线。

如果您不喜欢 file://路径格式,您可以在将文件提供给 openssl_pkey_get_private() 之前自己阅读文件的内容。 , 就像是:

$return = openssl_pkey_get_private(file_get_contents($path.'_priKEY.pem'));

关于php - openssl_pkey_get_private 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52593674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com