php 署名エラーは、ドキュメントに埋め込まれている署名コンテナが、元々その署名コンテナ用に予約されていたサイズを超えているために発生します。解決策は、署名コンテナ用にさらに多くのスペースを予約することです。
この記事の動作環境: Windows 7 システム、PHP バージョン 7.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 を使用してファイルを検証しましたが、正常に見えます。
署名された PDF を Adobe Reader で開くと、次のエラーが表示されます:
打开文件时,它说<块引用> 此文件已损坏但正在修复中 上面的蓝丝带说<块引用> 认证无效 当我打开签名面板时,它显示<块引用> 由 %s 认证 错误详情说<块引用> 此签名中包含的格式或信息有错误(支持信息:SigDict/Contents 非法数据) 当我点击"证书详细信息"时,没有任何反应?
解決策:
OP によって共有されたサンプル ファイルを分析すると、問題が理解できます。ドキュメントに埋め込まれた署名コンテナーが、元々そのために予約されていたサイズを超えています。 .
したがって、解決策は、署名コンテナー用にさらに多くのスペースを確保することです。
推奨される学習: 「PHP ビデオ チュートリアル 」
以上がPHP署名エラーの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。