首页  >  文章  >  后端开发  >  如何解决php 签名出错问题

如何解决php 签名出错问题

藏色散人
藏色散人原创
2022-01-26 11:52:232226浏览

php签名出错是因为嵌入到文档中的签名容器超出了原来为它预留的大小,其解决方法就是为签名容器预留更多空间即可。

如何解决php 签名出错问题

本文操作环境:Windows7系统、PHP7.1版、DELL G3电脑

如何解决php 签名出错问题?

问题描述:

我正在使用 TCPDF 生成一个 pdf 文档并对其进行签名.TCPDF 本身只是调用 PHP 的 openssl_pkcs7_sign 函数,这在我看来是基于 源代码.

直到最近一切正常.然后我改变了证书提供者.我刚刚更新了私钥、证书和证书链:

$pdf->setSignature(
                $this->public_certificate_path, 
                $this->private_key_path, 
                $this->private_key_password, 
                $this->extra_certificates_path, 
                1);

我在 extra_certificates_path 文件中以 PEM 格式复制了新的根证书和中间证书.我使用 openssl 验证了这个文件,看起来不错.

现在,当我在 Adobe Reader 中打开已签名的 PDF 时,它会显示以下错误:

打开文件时,它说<块引用>
此文件已损坏但正在修复中
上面的蓝丝带说<块引用>
认证无效
当我打开签名面板时,它显示<块引用>
由 %s 认证
错误详情说<块引用>
此签名中包含的格式或信息有错误(支持信息:SigDict/Contents 非法数据)
当我点击"证书详细信息"时,没有任何反应?

解决办法:

分析OP共享的示例文件可以理解问题:嵌入到文档中的签名容器超出了原来为它预留的大小.

因此,解决方案是为签名容器预留更多空间.

推荐学习:《PHP视频教程

以上是如何解决php 签名出错问题的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn