使用PHP数字签名文档

时间:2015-06-25 18:03:08

标签: php ssl-certificate client-certificates digital-certificate

我现在已经挣扎了两天了。

我已经使用客户端证书构建了身份验证,现在我想使用相同的证书来签署文档。

到目前为止我已尝试过:

  • 使用openssl_pkey_get_public($_SERVER["SSL_CLIENT_CERT"])获取公钥,并且工作正常。
  • 使用openssl_pkey_get_private($_SERVER["SSL_CLIENT_CERT"], "mypwd")获取私钥,但它不起作用,我不知道原因。

之后我计划使用openssl_sign()与该私钥签署pdf。

我第一次尝试创造这样的东西,有谁知道我做错了什么?

我的conf:

Apache / 2.4.12(Win32)OpenSSL / 1.0.1l PHP / 5.6.8

1 个答案:

答案 0 :(得分:1)

您无法使用客户端证书的私钥,因为私钥存储在客户端计算机上,并且不会传输到服务器。客户永远不会给你他的钥匙。通过网络进行的任何客户端私钥传输= FAILURE。服务器上只提供证书的公共部分。

唯一的选择是在客户端进行签名操作(通过ActiveX或类似的可以与客户端证书存储库交互的东西)。比如说,让客户端下载文档,在那里签名(在浏览器中)并将其上传回来或其他内容。