加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – openssl_verify和“error:0906D06C:PEM例程:PEM_read_

发布时间:2020-12-13 14:05:18 所属栏目:PHP教程 来源:网络整理
导读:我试图在 PHP中使用OpenSSL函数进行RSA签名/验证. 当我尝试使用我的公钥做openssl_verify时,我得到这个错误:错误:0906D06C:PEM例程:PEM_read_bio:没有起始行,但该函数本身正常工作(返回0,如果消息被修改,1如果完整). openssl_sign工作正常. 我该如何解
我试图在 PHP中使用OpenSSL函数进行RSA签名/验证.
当我尝试使用我的公钥做openssl_verify时,我得到这个错误:错误:0906D06C:PEM例程:PEM_read_bio:没有起始行,但该函数本身正常工作(返回0,如果消息被修改,1如果完整). openssl_sign工作正常.

我该如何解决?

目前,我使用openssl生成的公钥:

define("SC_MSG_PUBLIC",<<<EOD
-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALjPcOckMHDVLiUstcRwwx8kF5PzsiEs
rskyndWisbXMLU9BHomXwL7Qg2L91jE+sNSobkzBDF41CbwDiNlofZUCAwEAAQ==
-----END PUBLIC KEY-----
EOD
);

任何想法为什么这个错误触发,但事情工作正常吗?

试图用私有的方式生成公钥,并使用它,但它似乎是完全一样的,同样的错误信息:-S

$pkey = openssl_pkey_get_private(SC_MSG_PRIVATE);
$keyDetails = openssl_pkey_get_details($pkey);
file_put_contents('c:publickey',$keyDetails['key']);

此外,我已经尝试安装更新版本的一切(PHP 5.3.1,OpenSSL 1.0.0a) – 相同的结果.而且,我在窗户上.

您是否尝试使用包含您的公钥而不是纯公钥的(可能是自签名)证书调用openssl_verify()?

据我所知,一些PHP OpenSSL函数不能正确地支持裸体公共密钥,尽管看起来很奇怪,尽管有错误,它仍能正确地进行验证.

<?php
$private = openssl_pkey_get_private(file_get_contents('private'),'passphrase');

// This causes the "no start line" error when using a naked public key:
$public  = openssl_pkey_get_public(file_get_contents('public')); // <-- this should be cert

echo openssl_error_string()."n";

openssl_sign('Test',$sig,$private);
var_dump(openssl_verify('Test',$public));

echo openssl_error_string()."n";
?>

在Linux / UNIX shell(如bash)中将公钥转换为简单证书的示例(请参阅OpenSSL文档或更多教程):

# Create certificate request
openssl req -new -days 3600 -key [PRIVATE-KEY-FILE] -out [REQUEST-TMP-FILE]

# Create certificate from request
RANDFILE=[RANDOM-TMP-FILE] openssl x509 -req -in [REQUEST-TMP-FILE] -signkey [PRIVATE-KEY-FILE] -out [CERTIFICATE-OUT-FILE]

这也将创建您之后删除的临时文件,即[REQUEST-TMP-FILE]和[RANDOM-TMP-FILE].

PHP示例代码可以在http://de.php.net/manual/en/function.openssl-csr-new.php找到.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读