在PHP中签名公共x509证书

问题描述:

我想知道如何在php中签署文件。我需要签署一个XML文件。当我执行这段代码,它给了我下面的错误:在PHP中签名公共x509证书

Warning: openssl_sign(): supplied key param cannot be coerced into a private key in C:\xampp\htdocs\test\index.php on line 35

Warning: openssl_free_key() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test\index.php on line 38

的代码,这是一个:

$data->save("test.xml"); 

$signature; 
$pkeyid = openssl_pkey_get_public("./public.cer"); 
$path = 'test.xml'; 
openssl_sign($path, $signature, $pkeyid); 
openssl_free_key($pkeyid); 

修正: 好了,我有一个误解的事实我应该使用公共证书签署数据,并且我没有正确加载数据。我改变了它,它工作:) 我使用的功能是这一个:

$ pkeyid = openssl_pkey_get_private(file_get_contents('./ private.key'));

+0

手册中有一些很好的例子,http://php.net/manual/en/function.openssl-sign.php#example-967 –

+0

你的概念错了。您*使用私钥签名*数据,您*使用公钥验证*数据 –

路径“./public.cer”很可能是错误。尝试使用绝对路径。你的第二个警告是告诉你$ pkeyid是布尔值,这正是openssl_pkey_get_public()在错误时返回的值。

+0

如果我的证书位于C:/ xampp/htdocs/test中,应如何编写它? –

+0

file:// C:/xampp/htdocs/test/public.cer – pucky124

+0

欢迎来到*,请查看此链接以了解有关我们社区的更多信息:https://meta.stackexchange.com/questions/126180/is-它可接受到写-A-感谢您-IN-A-评论 – pucky124