Comandos OPENSSL de uso frecuente
La herramienta de aplicación inmediata de criptografía es OPENSSL. Para facilitar el aprendizaje de los conceptos básicos, es indispensable realizar los siguientes ejercicios. La criptografía es mucho mas extensa. A continuación se revisan las operaciones básicas:
Requerimientos:
- Tener instalado OPENSSL
- Contar con un certificado válido y su llave privada
- Tener los certificados de verificación de servicios OCSP
Convertir certificado y llave de Formato DER a PEM, que es el que usa OPENSSL
C:\\firma64\\bin> > openssl pkcs8 -inform DER -in ABCD1234.key -out ABCD1234.key.pem -passin pass:micontraseña C:\\firma64\\bin> > cat ABCD1234.key.pem -----BEGIN PRIVATE KEY----- MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALfaT/ZGfyGjwrdW yT+ffNALAxzjmOL5AYa52P8xn8I3th1xzEnRCjgfmQC0AeI9I1+bJBZQwZDrYPFX +JO8PkIzCR3pUUPDeZCV+gfJGESWXQG34agrm2c2cThhtp/ND4375G4NDpaJR9g9 ynAkwu5S2Su7Di5vAYmuYPRzipN5AgMBAAECgYBI8mr1qUT6APLaMaoJ/2rTVPs4 NCnOLMRpQ0YRAwyDT/2HM0a+Jx3p5MedWs7AiEeHwJOR8xrKOEovmBr96xu8FZAo kUzLA9toxng4oEW1+8BX0HfrPgD3UPQ9LRrtKH1RZrEmSRzqt1Bo2tHZ7ZXSnzr8 +/9tj9ieWuGaM4FwgQJBAO1JPt3JoiytYylifseSrwO4KmRfPYxzDbu6tVOBiUKE SQsHpXF59jC7c8NmdejIRwhhlLzDK3E2awQ2saX+GskCQQDGWkJyF3a8tOC+Fsp6 9PBR1LjCYHbAZHC7674fSZe2rK8ys1OT0hmu93wkrECSmRjfUVwIGrxt766kpvyW UlsxAkAZ5Cce7jRq6ZRrXJr2zdOY9Uxy3U2K+Lbj6BCHBxhiEKsjr/bmdedeE+Yi yRhOiSPvDy66lhU0ajqtIAasVRi5AkAynEEr/1SqnbRijEopyWmwV4i1AAwM1xP0 vxgJv6tYTwN8+kivBQLMpBUm/lSTk0DHamkDIF9H5co39OuqJ2VhAkBZkuGBz+QU l+uagHFs6LNbknhMULb03xCmVmV5KVi6CR5NzjNJfvsBlCH7rBM1qW66GbBbIlRo AABfzQGQQTiG -----END PRIVATE KEY-----
Extraer solo la llave pública del certificado
C:\\firma64\\bin> >openssl x509 -inform DER -outform PEM -in ABCD1234.cer -out ABCD1234.cer.pem C:\\firma64\\bin> >openssl x509 -pubkey -noout -in ABCD1234.cer.pem > ABCD1234.pub.pem C:\\firma64\\bin> >cat ABCD1234.pub.pem -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC32k/2Rn8ho8K3Vsk/n3zQCwMc 45ji+QGGudj/MZ/CN7YdccxJ0Qo4H5kAtAHiPSNfmyQWUMGQ62DxV/iTvD5CMwkd 6VFDw3mQlfoHyRhEll0Bt+GoK5tnNnE4YbafzQ+N++RuDQ6WiUfYPcpwJMLuUtkr uw4ubwGJrmD0c4qTeQIDAQAB -----END PUBLIC KEY-----
Convertir de CER a PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
Extraer la cadena original (XML-SAT)
El siguiente ejercicio, es ilustrativo para el proceso de firmado y validación de certificados, ya que se basa en el protocolo desarrollado por el SAT y no necesita tener instalada toda la infraestructura de Firma Electrónica.
.C:\\firma64\\bin<br> λ xsltproc sat_co_v3_0.xslt sat_cf_v3_0.xml > sat_cadena_original_v3_0.txt C:\\firma64\\bin λ cat sat_cadena_original_v3_0.txt ||3.0|2010-03-06T20:38:12|ingreso|PAGO EN UNA SOLA EXHIBICION|488.50|488.50|ABC740101GZ1|EMPRESA PLUS SAPI|AV. RIO MIXCOAC|No. 0|ACACIAS|BENITO JUAREZ|MEXICO, D.F.|Mexico|03240|AV. UNIVERSIDAD|1858|OXTOPULCO|DISTRITO FEDERAL|Mexico|03910|ABCD8001019Q8|JUAN PEREZ PEREZ|AV UNIVERSIDAD|16 EDF 3|DPTO 101|COPILCO UNIVERSIDAD|COYOACAN|DISTRITO FEDERAL|Mexico|04360|1.0|CAPSULAS|SOFTMICINA 100MG 10|244.00|244.00|1.0|BOTELLA|CLORUTO 500M|137.93|137.93|1.0|TABLETAS|SEDETEC 125MG 10|84.50|84.50|IVA|0.00|0.00|IVA|16.00|22.07||
.Aplicar el algoritmo de firmado RSAwSHA1
C:\\firma64\\bin λ xsltproc sat_cadenaoriginal_3_0.xslt sat_cfdv30.xml | openssl dgst -sha1 -sign ABCD1234.key.pem | openssl enc -base64 -A -out sat_cadena_original_v3_0.signed.b64.txt C:\\firma64\\bin λ cat sat_cadena_original_v3_0.signed.b64.txt gfgshFsvLvZwfhMdbB36kVNT6qS2USdWC9NVRgLXQz1JPHiEaDqfFNFz1TOisATf9DouqYv4fJe8rnVe/gdRc0Bdl07+s0/p6eHP/TTWFi2fSMCmiZ6Tu1RDRFQr2TMoC5KWUX5Xn9nUgEKXJnGGaZifPBDWvsZQnA0jKM5qzX8=
.Decodificar la cadena firmada de Base64 a binario, para poder comparar
.C:\\firma64\\bin λ base64 --decode sat_cadenaoriginal.signed.b64.txt > sat_cadenaoriginal_v3_0.signed.txt C:\\firma64\\bin λ cat sat_cadenaoriginal_v3_0.signed.txt --- NO LEGIBLE --- C:\\firma64\\bin λ openssl dgst -sha1 -verify ABCD1234.pub.pem -signature sat_cadenaoriginal_v3_0.signed.txt sat_cadena_original_v3_0.txt Verified OK
Toda la secuencia de comandos
openssl pkcs8 -inform DER -in ABCD1234.key -out ABCD1234.key.pem -passin pass:micontraseña openssl x509 -inform DER -outform PEM -in ABCD1234.cer -out ABCD1234.cer.pem openssl x509 -pubkey -noout -in ABCD1234.cer.pem > ABCD1234.pub.pem xsltproc sat_co_v3_0.xslt sat_cf_v3_0.xml > sat_cadena_original_v3_0.txt openssl dgst -sha1 -sign ABCD1234.key.pem sat_cadena_original_v3_0.txt > sat_cadenaoriginal_v3_0.signed.txt xxd -p sat_cadenaoriginal_v3_0.signed.txt openssl dgst -sha1 -verify ABCD1234.pub.pem -signature sat_cadenaoriginal_v3_0.signed.txt sat_cadena_original_v3_0.txt base64 sat_cadena_original_v3_0.txt > sat_cadena_original_v3_0.txt.b64. openssl base64 -in sat_cadenaoriginal_v3_0.signed.txt > sat_cadena_original_v3_0.txt.b64
.