【发布时间】:2017-12-07 11:31:21
【问题描述】:
我正在使用tcpdf 生成 pdf 文件并对其进行签名。问题是我获取的文件显示“标志无效”和“此文档已进行更改”,因此标志无效。代码如下:
$pdf->SetProtection(array('copy'), '', null, 0, null);
$pdf->SetMargins(0, 0, 0, true);
$pdf->SetHeaderMargin(0);
$pdf->SetFooterMargin(0);
$pdf->SetAutoPageBreak(false, 0);
$pdf->AddPage('L');
$pdf->Image($imagen, -7, 1, 310, 210, '', '', '', false, 300, '', false, false, 0);
if(!empty($imagentrasera)){
$pdf->AddPage('L');
$pdf->Image($imagentrasera, -7, 1, 310, 210, '', '', '', false, 300, '', false, false, 0);
}
if(!empty($certificado_digital)){
// PENDIENTE DE TERMINAR
$info = array(
'Name' => __('Certificado PDF',true),
'Location' => '',
'Reason' => '',
'ContactInfo' => '',
);
//var_dump($_SERVER['DOCUMENT_ROOT']);
// HAY QUE RETOCAR¡¡¡
$certificado_crt = 'file://'.$_SERVER['DOCUMENT_ROOT'].Configure::read('directorioinstalacion').'app/webroot/Documentos/certificados/'.$certificado_digital;
$certificado_key = 'file://'.$_SERVER['DOCUMENT_ROOT'].Configure::read('directorioinstalacion').'app/webroot/Documentos/certificados/'.$certificado_key;
$pdf->setSignature($certificado_crt,$certificado_key, '', '', 1, $info);
}
echo $pdf->Output(__('Certificado',true).'.pdf', 'I');
我使用从this 示例页面生成的 p12 作为示例。我传递给setSignature 的参数是$certificate_crt 和$certificate_key。
我按照以下步骤生成了这些 crt 和密钥文件:
openssl pkcs12 -in example_p12.p12 -out certificate.pem -nodes- 创建一个空的 cert.crt 文件。
- 创建一个空的 cert_key.key 文件。
- 将证书区域从 .pem 复制到 crt 文件中。
- 将证书密钥区域从 .pem 复制到密钥文件中。
所以,我不知道我做错了什么,它应该以这种方式工作,但我不确定我是否使用了正确的证书文件,或者我应该使用不同的证书文件,比如两个 pem 文件或其他文件。我应该使用其他类型的证书文件?
【问题讨论】: