2014-12-15 3 views
1

Я пытаюсь подписать PDF-код в скрипте PHP с сертификатом. До сих пор, я выполнил мой тест с самоподписным файлом .crt, сгенерированный с помощью командной строки:Хорошее использование сертификатов для подписи PDF

openssl req -x509 -nodes -days 365000 -newkey rsa:1024 \ 
      -keyout tcpdf.crt -out tcpdf.crt 

(да, я использую TCPDF). Он работает нормально.

Но знаете, моя компания дала мне настоящие сертификаты (от TBS-certificats), и я немного разочарован: У меня есть .cer, а .pem и .P7B файл ...

Я пытался использовать каждый из них в моем сценарии, но у меня ошибка

Warning: openssl_pkcs7_sign(): error getting private key 

код, я использую с самоподписанного сертификата:

// set certificate file 
$certificate = 'file://data/cert/tcpdf.crt'; 

// set document signature 
$pdf->setSignature($certificate, $certificate); 

Могу ли я изменить что-то? Я не очень хорошо знаком с криптографическим миром ...

ответ

0

Прежде всего, вы должны указать свой скрипт на существующий файл. В этом случае файл .cer будет содержать сертификат, поэтому попробуйте вместо «/path/file.CRT».


Теперь расширение файла по сравнению как сертификат закодирован является своего рода связаны, боюсь, даже если имена индуцируя некоторую путаницу см this reference.

Я понятия не имею, поддерживает ли tcpdf оба файла с кодировкой pem и der из-за отсутствия документации. Они, вероятно, делают, но на всякий случай, вот как это можно обойти. Команды тестирования выдадут вам ошибку «невозможно загрузить сертификат», если вы допустили неправильную кодировку.

  • тестирования для PEM закодированных файлов: openssl x509 -in cert.cer -text -noout
  • тестирования для дера кодируются файлов: openssl x509 -in certificate.der -inform der -text -noout
  • преобразование PEM в DER openssl x509 -in cert.cer -outform der -out cert.der
  • преобразования МЭДА в PEM openssl x509 -in cert.cer -inform der -outform pem -out cert.pem
+0

Спасибо за ссылку , очень полезно. Однако у меня такая же проблема. С помощью тестовых команд я обнаружил, что мои файлы .cer и .pem закодированы как pem. То же самое для моего .crt самоподписанного. Итак, я пытаюсь использовать .cer вместо .crt, но у меня такая же проблема ... – IronRabbit