Too Cool for Internet Explorer

Cómo firmar datos utilizando llaves PKCS#12 en PHP

Hora y Fecha: Enero 21, 2008 @ 4:10 pm Autor: Moisés Maciá
Categorías:
192 views

El formato de llavero PKCS#12 (extensiones .p12 y .pfx) es uno de los más populares para almacenar
claves criptográficas. En PHP podemos gestionar este tipo de claves a partir de la versión 5.2.2
gracias al módulo OpenSSL.

Como es muy nuevo y no hay documentación al respecto, dejo aquí un ejemplo de uso:

  1. $file = "/home/mmacia/my_secret_diary.txt";
  2. $data = file_get_contents($file);
  3.  
  4. $keywtore = "/home/mmacia/cert.p12";
  5. $passwd = "fake_password";
  6.  
  7. // open PKCS#12 file
  8. if ( openssl_pkcs12_read( file_get_contents($keystore), $certs, $passwd ) )
  9. {
  10.     $signed = null;
  11.     $pk      = $certs[‘pkey’]; // get private key
  12.  
  13.     // sign data with private key
  14.     if ( openssl_sign($data, $signature, $pk, OPENSSL_ALGO_SHA1) )
  15.         $signature= base64_encode($signature);
  16.     else
  17.         throw new Exception(‘Unexpected error signing file "’ . $file . ‘".’);
  18. }
  19. else
  20. {
  21.     throw new Exception(‘Cannot open the keystore "’ . $keystore . ‘"’);
  22. }
  23.  
  24. print_r($data);
  25.  
  26. print_r($signature);

Bad Behavior has blocked 1279 access attempts in the last 7 days.