Creación de Archivos .cem para Finkok?

216 views
Skip to first unread message

Antonio Dávila

unread,
Jan 5, 2015, 12:59:03 PM1/5/15
to vfp-factura-ele...@googlegroups.com
Hola, pues resulta que ya estoy por entrar a producción Finkok mi aplicación en PHP y pues en pruebas todo me funcionó perfecto con las llaves de prueba del SAT

aad990814bp7.cer y aad990814bp7.key

En el código que usamos de prueba  me pide usar dos archivos aad990814bp7.cer.pem y aad990814bp7.key.pem que ya teníamos y pues todo perfecto

pero por ningún lado ni el chavo de finkok que me dejó colgado en el chat encuentro como  y de donde se generan estos dichosos .pem

Los genero a partir de cual archivo? Porque tengo los .key y .cer pero son llamados aad990814bp7_1210261233s.key

Estoy totalmente enredado y perdido, cualquier ayuda de como hacer esto paso a paso sería muy bienvenida, gracias!

Saludos
Antonio

Héctor Bernal

unread,
Jan 5, 2015, 6:38:17 PM1/5/15
to vfp-factura-ele...@googlegroups.com
Antonio,

Buenas tardes. Checa en la clase del grupo el código donde se generar esos archivos. Te paso a continuación la función donde se generan.


*-- CFDValidarKeyCer (Funcion)
*   Valida que los archivos KEY y CER indicados sean complementarios
*
*   Autor: Victor Espina
*
FUNCTION CFDValidarKeyCer(pcArchivoKEY, pcArchivoCER, pcPassword, pcOpenSSL)
 *
 CFDConf.UltimoError = ""
  
 *-- Se verifica que la carpeta indicada contenga el archivo OPENSSL.EXE
 IF EMPTY(pcOpenSSL)
  pcOpenSSL = CFDConf.openSSL
 ENDIF
 IF EMPTY(pcOpenSSL) OR NOT FILE(ADDBS(pcOpenSSL) + "OPENSSL.EXE")
  CFDConf.ultimoError = "No se encontro el archivo OPENSSL.EXE en la ruta indicada"
  RETURN .F.
 ENDIF
 pcOpenSSL = GetShortName(ADDBS(FULLPATH(pcOpenSSL)) + "OPENSSL.EXE")
 
 
 *-- Se prepara un archivo BAT con los comandos a ejecutar
 LOCAL cBATFile,cTempFile
 cBATFile = GetTempFile("BAT")
 cTempFile = JUSTSTEM(cBATFile)
 
 LOCAL cBuff
 cBuff = pcOpenSSL + " x509 -inform DER -in {cerFile} -noout -modulus > {tempFile}.m1" + CRLF + ;
         pcOpenSSL + " pkcs8 -inform DER -in {keyFile} -passin pass:{password} -out {tempFile}.pem" + CRLF + ;
         pcOpenSSL + " rsa -in {tempFile}.pem -noout -modulus > {tempFile}.m2" + CRLF + ;
         "DEL {tempFile}.pem" + CRLF
   
 cBuff = STRT(cBuff,"{cerFile}",GetShortName(FULLPATH(pcArchivoCER)))
 cBuff = STRT(cBuff,"{keyFile}",GetShortName(FULLPATH(pcArchivoKEY)))
 cBuff = STRT(cBuff,"{password}",pcPassword)
 cBuff = STRT(cBuff,"{tempFile}",cTempFile)
 STRTOFILE(cBuff,cBATFile)
 

 
 *-- Se ejecuta el BAT
 LOCAL oWSH
 oWSH = CREATEOBJECT("WScript.Shell") 
 oWSH.Run(cBATFile, 0, .T.)
 
 IF !FILE(cTempFile + ".M1") OR !FILE(cTempFile + ".M2") 
  CFDConf.ultimoError = "Ocurrio un error al intentar validar los archivos KEY y/o CER"
  ERASE (cTempFile + ".*")
  RETURN .F.
 ENDIF

 LOCAL cCerMod, cKeyMod
 cCerMod = FILETOSTR(cTempFile + ".m1")
 cKeyMod = FILETOSTR(cTempFile + ".m2")
 
 IF EMPTY(cCerMod)
  CFDConf.ultimoError = "No se pudo obtener el modulus del archivo CER"
  ERASE (cTempFile + ".*")
  RETURN .F.
 ENDIF 
 
 IF EMPTY(cKeyMod)
  CFDConf.ultimoError = "No se pudo obtener el modulus del archivo KEY (verifique la contraseña)"
  ERASE (cTempFile + ".*")
  RETURN .F.
 ENDIF 
 
 LOCAL lValid
 lValid = (cCerMod == cKeyMod)
 IF NOT lValid
  CFDConf.ultimoError = "El archivo KEY no corresponde con el archivo CER indicado"
 ENDIF
 

 *-- Se eliminan los temporales creados
 ERASE (cTempFile + ".*")
 
 
 RETURN lValid
 * 
ENDFUNC



Espero te sea de ayuda.



Saludos desde México, D.F.


--
Has recibido este mensaje porque estás suscrito al grupo "vfp-factura-electronica-mexico" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a vfp-factura-electroni...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a vfp-factura-ele...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/vfp-factura-electronica-mexico.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Mapasac

unread,
Jan 5, 2015, 7:36:54 PM1/5/15
to vfp-factura-ele...@googlegroups.com
Antonio Prueba con esto :

Este es el contenido de una archivo extension .bat lo que esta sombreado es lo que debes de cambiar.

C:\SSL\openSSL.exe pkcs8 -inform DER -in aad990814bp7_1210261233s.key -passin pass:"Password del certificado" -out aad990814bp7_1210261233s.key.pem

C:\ SSL\openSSL.exe rsa -in aad990814bp7_1210261233s.key.pem -des3 -out aad990814bp7_1210261233s.key.enc -passout pass:"Tu password en finkok"

C:\ SSL\openSSL.exe x509 -inform DER -outform PEM -in aad990814bp7_1210261233s.cer -pubkey -out aad990814bp7_1210261233s.cer.pem

 

Por ultimo en el directorio donde lo vayas a ejecutar tienes que tener los archivos.cer y .key.

Te paso zip como ejemplo.

 

Salds….

Mapasac General Escobedo, N.L. Mexico

finkok.zip

Antonio Dávila

unread,
Jan 6, 2015, 3:25:28 PM1/6/15
to vfp-factura-ele...@googlegroups.com
Gracias!!! ya lo eché a andar al fin con el último ejemplo y todo bien, andaba hecho bolas con los certificados de cual era cual pero ya quedó! =)

Muchas gracias a todos!!

Saludos

Arturo Ramos

unread,
Jan 12, 2015, 7:53:28 PM1/12/15
to vfp-factura-ele...@googlegroups.com
Hola Antonio,

Me interesa tu código de PHP con el que haces todo este rollo.

¿Cómo te puedo contactar?

Saludos.

Arturo Ramos
Cancún, México.
Reply all
Reply to author
Forward
0 new messages