2013-02-28 18 views
10

Desidero generare un certificato (autofirmato al momento) per un PDF crittografato sul server. Ciò che è interessante per me è il flusso di lavoro su come farlo con TCPDF.Certificato per TCPDF

quello che ho fatto:

1) Generare chiavi:

openssl req -x509 -nodes -days 365000 -newkey rsa:1024 
openssl pkcs12 -export -in tcpdf.crt -out tcpdf.p12 

2) quindi generare il PDF con la .crt - presentare

3) Poi ho iniziato acrobat reader e installati il certificato (tcpdf.p12). Ho usato Documento-> impostazioni di sicurezza -> ID digitale

4) Potrei importare le impostazioni di sicurezza ma non posso ancora aprire il PDF. Non so se lo sto facendo bene? Cosa succede acrobat reader 9.5.4 apre una finestra di dialogo con l'inserimento di una password. Io do la password e viene visualizzato un errore -> Errore sconosciuto -> CRecipientList-218

5) codice che ho usato (fondamentalmente la stessa)

$certificate = 'file://../tcpdf.crt'; 
$info = array(
'Name' => 'TCPDF', 
'Location' => 'Office', 
'Reason' => 'Testing TCPDF', 
'ContactInfo' => 'http://www.tcpdf.org', 
); 
$pdf->setSignature($certificate, $certificate, 'tcpdfdemo', '', 2, $info); 
$pdf->SetProtection($permissions=array('print', 'copy'), $user_pass='', owner_pass=null, $mode=1, $pubkeys=array(array('c' => 'file://../tcpdf.crt', 'p' => array('print')))); 

ho unito i seguenti esempi:

http://www.tcpdf.org/examples/example_052.phps

http://www.tcpdf.org/examples/example_016.phps

PS: so che è un esempio molto pratico. Ho solo pensato che è più facile capire i passi che sto facendo.

Domande:

  1. è il flusso di lavoro in diritto generale su come affrontare i certificati per un PDF con la crittografia (!)?

  2. Quando si genera il file .p12, devo fornire una password per quel file che ho utilizzato in seguito quando ho importato il certificato in acrobat. Lo sto chiedendo perché ho anche la possibilità "sulla generazione" di dare la password.

  3. Se il flusso di lavoro è corretto ... come posso risolvere il problema?

+1

Hai provato a contattare invece tcpdf ragazzi? – j0k

+0

L'ho fatto, ma non ci sono risposte finora su sourceforge. – whereismydipp

risposta

0

spero che anche preso uno sguardo ai commenti;) c'è un mini come impostare il pdf utilizzando fornito di file

particolare:

// To open the document you need to install the private key (tcpdf.p12) on the Acrobat Reader. The password is: 1234 

tuttavia, è necessario fornire setProtection con chiave esistente:

'c' => 'file://../tcpdf.crt' 

il percorso che hai indicato è solo mostrare in cui è necessario dare il percorso, ma il percorso in sé devono essere cambiati

Sintesi: si prega di leggere di nuovo i commenti nel file di esempio 016, che vi aiuterà a farlo funzionare il modo in cui è necessario

+0

Ovviamente ho cambiato il percorso. Ogni esempio funziona da solo ma non insieme. – whereismydipp

3

L'approccio è fondamentalmente corretto, ma potresti aver perso alcuni dettagli in esso.

Ho utilizzato il certificato nel formato *.crt senza la passphrase (inclusa la chiave privata e pubblica) e funziona correttamente.

Inoltre, è necessario aver installato l'estensione OpenSSL in PHP.

Vedi le osservazioni per il metodo TCPDF::setSignature() di Nicola Asuni:

* To create self-signed signature: openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout tcpdf.crt -out tcpdf.crt 
* To export crt to p12: openssl pkcs12 -export -in tcpdf.crt -out tcpdf.p12 
* To convert pfx certificate to pem: openssl pkcs12 -in tcpdf.pfx -out tcpdf.crt -nodes 

Non avete bisogno di installare alcun certificato nel Acrobat Reader - documenti PDF generati firmati con certificati autofirmati semplicemente apparire come non attendibile, ma ancora può normalmente aprire.