-- tomado de http://www.lacorona.com.mx/fortiz/
Manejo del certificado y sello digital + Factura Electronica en México
Introduccion |
Para los que todavia no tengan el famoso anexo 20 del diario oficial del 1 de septiembre del 2004 lo pueden obtener aqui. El Anexo 20 empieza en la pagina 135 y termina en la pagina 160. |
|
En la pagina informacion a detalle sobre Comprobantes fiscales Didigitales del SAT esta una presentacion en PowerPoint fechada en Febrero del 2005 fea_fe.ppt donde en la diapositiva 58 "Un par de Notas Sobre Llaves" mecionan que la llave privada esta en con el standard PKCS8 en formato DER. |
|
Desafortunadamente los algoritmos PHP de OpenSSL requieren que este en formato PEM. |
|
Llave privada |
Ademas esta el 'problema' de la contraseña, se puede escribir la contraseña en el codigo PHP pero queda muy a la vista, o se le puede quitar la contraña al archivo. Yo obte por esto ultimo. |
|
openssl pkcs8 -inform DER -in AAA010101AAA_0408021316S.key -out AAA010101AAA.key.pem |
Este programa pide la contraseña para poder abrir la llave y la convierte al formato PEM ya sin la contraseña. Podemos ver el contenido del archivo porque ya esta en formato base64. |
|
$ cat AAA010101AAA.key.pem -----BEGIN RSA PRIVATE KEY----- MIICXgIBAAKBgQDArCo5om1eOPsVVkgG57X0VZI+Y/kqSRRqtOVBGj8rKx38nYjH VqAkKS4sYRsvLtXI+1courEksbrhYxkYJOc1rqm6uyWSIbrtwhSStoETa2/+3Zsv tGYakQARhlPm6Pqyj6DjiNZrMW8JjtSehr4grd17Aub6L3wv28tkHvIizwIDAQAB AoGBALxMReQXws0v4OsEbNYaw++rZYaGC+/whfyXF+pdLVkSBXdpulAeb9mHSXHj 4T5mhlaqlI7gjdkvvVUilVbMUgypGYr8D7tw+cIw4dY59T+iYJP4ohu0/9QxT61z LaxCDWz1oQSWrqVrC2YeBMZlUMqoj60qhZuN/nMLuMlf69s5AkEA6gDl7P8sgMk5 ur0BIpDDsAiXS0GwbrbKg+b9Ha7OAG+8rMG4K8oTSNXsZESLrN2ZcLzr08Xp/GIv 8qZzWoT17QJBANLIq6mQKXjPYX9PYvFB4voQJ2uBzARbT+9IBEki9IeBoa+8KMlh XatepWNnWN+EGFu25K+TYimWvW/alL81pCsCQQDGsbyKYKIJONQsHBC6qPGAp8rP vBdz6wJKvfhvG98Pv9EVX+hiRlPZpMv0179CKWgAsmoMiCEGjNjp0Sxh0ESBAkEA jrmCQxZyfnMtuV6vyFysrFYz2v/QfUK3JXbGMB+TJA4KxUvK8lETc+5qXpyj+PUg 6Tk2MAzD8xU2wH5pKe/QcQJAEYsi0vjsIzcIOaCRRPA+H0kOEgx4wPZmKNrLNGru gBIUpRlCzi6zGAhq3KVosQeqp0TAg9aSREW+Jux6nYJigA== -----END RSA PRIVATE KEY----- |
Como mencione, este certificado ya esta sin contraseña, si se quiere en formato PEM pero con la contraseña se ejecuta este otro comando que la solicita y encripta la llave privada. |
|
$ openssl rsa -in AAA010101AAA.key.pem -des3 -out conllave.key.pem writing RSA key Enter PEM pass phrase: Verifying - Enter PEM pass phrase: |
Este archivo en formato PEM tambien tiene el contenido en formato base64 pero esta cifrado con el metodo 3DES por lo cual solo se puede usar para firmar si se proporciona la contraseña correcta. |
|
$ cat conllave.key.pem -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,40B029D5AE25EDB0
n/giCSQ/F91Zn1sAfdx8qO6fNNHYIJijtTUWABCrP9t8B/WLXkdhpOE4f/8pq1mc NesOY6/wIwWxOOilBXjcOFUuvJAIys6M6YXhVt5i3efU5NxdfLHGcUtMh2sQnVia X1c094aMONYtVXOfTphWnSIwillGIIRaDkwZXV8T1dxt4X0uzXM7EFTYi6cYE9Ok 3931+ehoRUN8wPqblZpCVqaM14m71nI9VC7PYe72Dhu/62B/PHl5uX551KV0ABHv rn1rycdsz0c+ynu1No2Hx0MacP//QzRjHkfhKbHCJEOHCSQIRQw8noU035cXmG3O zMoxZFgPpZPSbBYK/F3xtcqos+Zfp9neE9d/K/LHUC2W2YRl9bMZV3xcV9jArqJ4 3pL4Q6qwF8XG2Qeu1kUBtkOXqmUNa+6y7FaPCPbjS3sBXKBc+Ysgei2KWSmRDNR6 urulvRNhtfTJzLM52KlvAjg6rj8O+YFaErz8fJ2TiDDBiUdcKMLbH1uADe+aZyEt LvshfAtyl7lKpdWxCro6wfCvkt95YRvQa1JILV6eVnhu5CZWtc3hjCaJuiSTvkjK fxXaZWLNC9L2Du+xR4ceBk4L1BSu6k6up1nlTqctj9znRJ5BdkOdxkNhCbU9MI65 TthIFHkRAjHZUsJx79EhsLPH1lh9VPMxgNdYTr9OuYC+ro9pKinHsGnbQIkCOEkt OSKwelU94DrOcpzIvqIeV4dxxCHPHLaeLUN13w3mLX0vtbLKb8Ml0CkTjzFBYA4H DmgS3duVXUnPO4GDxcn+ZrXPDdBCqMW1nFG0BVgsBwuwd4v5LvgCtw== -----END RSA PRIVATE KEY----- |
Llave publica |
Ademas el certificado o llave publica tambien esta en formato DER por lo que tambien hay que convertirlo |
|
openssl x509 -inform DER -outform PEM -in AAA010101AAAsd.cer -pubkey >AAA010101AAA.cer.pem |
Ya convertido ya podemos ver el contenido del certificado de llave publica |
|
24/feb/2006, Gracias a Hector Magaña de Accend por corregirme en el comando para generar el archivo incluyendo la llave publica. |
|
$ cat AAA010101AAA.cer.pem -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDArCo5om1eOPsVVkgG57X0VZI+ Y/kqSRRqtOVBGj8rKx38nYjHVqAkKS4sYRsvLtXI+1courEksbrhYxkYJOc1rqm6 uyWSIbrtwhSStoETa2/+3ZsvtGYakQARhlPm6Pqyj6DjiNZrMW8JjtSehr4grd17 Aub6L3wv28tkHvIizwIDAQAB -----END PUBLIC KEY----- -----BEGIN CERTIFICATE----- MIIDpDCCAoygAwIBAgIUMDAwMDEwMDAwMDAwMDAwMDAxMTQwDQYJKoZIhvcNAQEF BQAwgcMxGTAXBgNVBAcTEENpdWRhZCBkZSBNZXhpY28xFTATBgNVBAgTDE1leGlj bywgRC5GLjELMAkGA1UEBhMCTVgxGjAYBgNVBAMTEUFDIGRlIFBydWViYXMgU0FU MTYwNAYDVQQLFC1BZG1pbmlzdHJhY2nzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5m b3JtYWNp824xLjAsBgNVBAoUJVNlcnZpY2lvIGRlIEFkbWluaXN0cmFjafNuIFRy aWJ1dGFyaWEwHhcNMDQwODAyMTk0NzEzWhcNMDYwODAyMTk0NzEzWjCBuDElMCMG A1UELRMcQUFBMDEwMTAxQUFBIC8gQUFBQTAxMDEwMUFBQTEeMBwGA1UEBRMVIC8g QUFBQTAxMDEwMUhERlJYWDAwMRowGAYDVQQKExFFbXByZXNhIGRlIFBydWViYTEb MBkGA1UECxMSU3VjdXJzYWwgZGUgUHJ1ZWJhMRowGAYDVQQDExFFbXByZXNhIGRl IFBydWViYTEaMBgGA1UEKRMRRW1wcmVzYSBkZSBQcnVlYmEwgZ8wDQYJKoZIhvcN AQEBBQADgY0AMIGJAoGBAMCsKjmibV44+xVWSAbntfRVkj5j+SpJFGq05UEaPysr HfydiMdWoCQpLixhGy8u1cj7Vyi6sSSxuuFjGRgk5zWuqbq7JZIhuu3CFJK2gRNr b/7dmy+0ZhqRABGGU+bo+rKPoOOI1msxbwmO1J6GviCt3XsC5vovfC/by2Qe8iLP AgMBAAGjHTAbMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgPoMA0GCSqGSIb3DQEB BQUAA4IBAQA3c1OpeaWhP1Qt5XBb3CKogVjo8oUfIJdayTYVG/jy/STtWUJpQ5V1 4esa4ZrhTtYT1ZJiXPwQTS1fEDNr4XrmyFoimXfj9/pemGu/61skcViVB2rw3H6S 5Mn8b2ICx6zAK+KVoFal/mJpXLOGvH4S7E529MneLh6rktDxJ+338fFgF2sEZItf NaSeAsX4Nllsz4G4re0nnSShD3T9y6o2nMpOwphMgpy12HsQm7XxIvZe+SIUjhBk Q7UVz9/6yuD/Hguh38vnU9j98VWahVjUT4BnI1RTPiYlaxlMsqQOkh1QIbOufki5 4wledKtwlkS5x71yo3HMVR9CMK2GJV39 -----END CERTIFICATE----- |
Y por supuesto ya podemos usar varios comandos para sacar mas informacion de ese conjunto de datos. |
|
$ openssl x509 -in AAA010101AAA.cer.pem -issuer -noout issuer= /L=Ciudad de Mexico/ST=Mexico, D.F./C=MX/CN=AC de Pruebas SAT/OU=Administraci\xF3n de Seguridad de la Informaci\xF3n/O=Servicio de Administraci\xF3n Tributaria $ openssl x509 -in AAA010101AAA.cer.pem -startdate -enddate -noout notBefore=Aug 2 19:47:13 2004 GMT notAfter=Aug 2 19:47:13 2006 GMT $ openssl x509 -in AAA010101AAA.cer.pem -subject -noout subject= /x500UniqueIdentifier=AAA010101AAA / AAAA010101AAA/serialNumber= / AAAA010101HDFRXX00/O=Empresa de Prueba/OU=Sucursal de Prueba/CN=Empresa de Prueba/name=Empresa de Prueba $ openssl x509 -in AAA010101AAA.cer.pem -serial -noout serial=3030303031303030303030303030303030313134
|
Ya para ver ejemplos de como usar estos certificados para generar el sello del certificado digital les recomiendo que vean esta pagina donde tambien aplico XSLT para generar la cadena original. |
No hay comentarios:
Publicar un comentario