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中文網其他相關文章!