ssl证书-使用PHP对文档进行数字签名


ssl certificate - Digitally Sign Document with PHP

我已经为此挣扎了两天。

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

到目前为止我尝试过的:

  • 使用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

您不能使用客户端证书的私钥,因为私钥存储在客户端机器上,不会传输到服务器。客户从不把钥匙给你。通过网络传输的任何客户端私钥=失败。服务器上只有证书的公共部分可用。

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