我试图验证一些私钥,但 php 方法openssl_pkey_get_private()总是返回false。openssl_error_string ()返回:
错误:0906D06C:PEM 例程:PEM_read_bio:无起始行
$return = openssl_pkey_get_private($path.'_priKEY.pem');
if ($return === false) {
var_dump(openssl_error_string());
}
Run Code Online (Sandbox Code Playgroud)
尝试使用从 .pfx 文件中提取的私钥、从 .p12 文件中提取的私钥,甚至是自行生成的密钥(使用 openssl)。已经尝试过“RSA 私钥”、“加密私钥”和“私钥”。没有什么变化。
私钥内容:
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0B
[......................]
Wxdadnf7MB7DicckIZTKVy1L
-----END PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)
您似乎没有为文件路径提供正确的格式。确保它以 开头file://,后跟绝对或相对路径。是的,如果您选择绝对路径,那么文件名的路径将类似于file:///absolute/path/to/keyfile.pem,以三个斜杠开头。对于相对路径,它将是file://relative/path/to/keyfile.pem.
根据openssl_pkey_get_private() 的文档,您可以将密钥作为文件路径或包含实际密钥的字符串提供。仅当该值以 开头时file://,它才会被解释为文件的路径 (URI)。否则,该值将被解释为包含 PEM 编码密钥的字符串。在后一种情况下,它期望有一条被识别为 PEM 的起始线,例如-----BEGIN PRIVATE KEY-----。这就是为什么您会收到该错误消息,您的参数既不以 PEM 起始行开头file://也不以 PEM 起始行开头。
如果您不喜欢file://路径格式,您始终可以在将文件提供给 之前自行读取文件内容openssl_pkey_get_private(),例如:
$return = openssl_pkey_get_private(file_get_contents($path.'_priKEY.pem'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10859 次 |
| 最近记录: |