Imagen

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.


ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03

Cadena XML de la llave privada en base 64 ?

La libreria OpenSSL es la mas usada para generar el sello digital, independientemente del lenguaje aqui encontraras informacion de como usar la libreria
[[ FORO CERRADO DEBIDO A QUE YA LA INFORMACION YA NO ES VIGENTE ]]
IRCSA
Mensajes: 53
Registrado: Sab Nov 20, 2010 8:20 pm
Ubicación: Canún, México
Contactar:

Cadena XML de la llave privada en base 64 ?

Mensajepor IRCSA » Vie Oct 28, 2011 10:12 am

Hola foro,

Para el proceso de cancelación el PAC me pide que le mande en uno de los nodos de la llamada la cadena XML de la llave privada en base 64.

Estas son las instrucciones que me dan:

Servicio de Cancelación - Llave Privada
Debido a que han habido varios que han tenido dudas con el valor del elemento llaveCetificado que debe ir en el XML, vamos a explicarlo un poco mas...

El archivo .key es un contenedor de la llave privada del emisor. Para poder abrir el contenedor y extraer la llave privada se utiliza la contraseña en el caso de nuestro emisor de pruebas, la contraseña es: xxxx345678

La llave privada es el XML contenido dentro del archivo .key .
Este XML es el que se pasa a base64 y se pone en el valor del elemento llaveCertificado.

A continuación mostraremos el ejemplo en base a nuestro emisor de pruebas:

LLave privada XML
<RSAKeyValue><Modulus>1KHjZtqkEv1ECTgubPkBz6KrF2oVycKyjtDCHGOsr0iSc8pSRVU8L0BFIxMX5X3bc00C6BxrZDo/f/CIjusnmSX7dO7SXM0EC6VBeBh4PcHz9cVTQ9tLJMnuxH60xkyQXQCmoYPUxWNtLX5N8NWmwRUGlfo9SFL8VgsP3X8bnZk=</Modulus><Exponent>AQAB</Exponent><P>9g3MtFSVVE9iYOyiTWuX9OqeTfPDGcm7XVaEyE5dvVk6lP3XvTo4w7vN5CpbrD4fpg4Bw3zZ6Yu9bm68+HIobw==</P><Q>3To87MOrKL7RvKPI3Iy1j1c4aSDOY7GQOs/iZJW8eRrE0qEF9ja6MqY5zhMRXndcma3FcPFxfqf7FczWRFdOdw==</Q><DP>jXOpdxIZNvrcJ7RiKffsx9QJZe74/l5G5IXUmALVSQF++CBmYlaSQ5Q37S+cvAyKzT/IK8Ye0HCRWmc3I+0c6Q==</DP><DQ>VlB8qNwHEdSxvGoi2npD9HNRXSMho6AJ6AhoClqpuI6LMKsGynO73jsg3pht9G+Zv5QfLtvlLkeYHX9YMj3mLQ==</DQ><InverseQ>EtwABGpy/cumIxHI5QGPHM70ttRMvK8zCmTgJajLE33zrXfqKnSHU1LBsnJx20Pi+nGosBct8GihFu/NRMvWmQ==</InverseQ><D>PEg5RCuwYIHVDBgVcWeXD9q6TsUQsEa2gK7GmW3Yw0j73D/72xQzH+JEt5DuMW3hDWtD67JC8ANjhU4YKQyaCNi1bTJ4FRbGR/h8RYJIWz/ig9NyCvd1ucnXWD2dv2v1VsPP47/szPeFNY4JEJQ0mqMttjl2WVXm0mIrRXJQABE=</D></RSAKeyValue>


_llavePrivada = Convert.ToBase64String(Encoding.UTF8.GetBytes(llavePrivada))

Resultado:
PFJTQUtleVZhbHVlPjxNb2R1bHVzPjFLSGpadHFrRXYxRUNUZ3ViUGtCejZLckYyb1Z5Y0t5anREQ0hHT3NyMGlTYzhwU1JWVThMMEJGSXhNWDVYM2JjMDBDNkJ4clpEby9mL0NJanVzbm1TWDdkTzdTWE0wRUM2VkJlQmg0UGNIejljVlRROXRMSk1udXhINjB4a3lRWFFDbW9ZUFV4V050TFg1TjhOV213UlVHbGZvOVNGTDhWZ3NQM1g4Ym5aaz08L01vZHVsdXM+PEV4cG9uZW50PkFRQUI8L0V4cG9uZW50PjxQPjlnM010RlNWVkU5aVlPeWlUV3VYOU9xZVRmUERHY203WFZhRXlFNWR2Vms2bFAzWHZUbzR3N3ZONUNwYnJENGZwZzRCdzN6WjZZdTlibTY4K0hJb2J3PT08L1A+PFE+M1RvODdNT3JLTDdSdktQSTNJeTFqMWM0YVNET1k3R1FPcy9pWkpXOGVSckUwcUVGOWphNk1xWTV6aE1SWG5kY21hM0ZjUEZ4ZnFmN0ZjeldSRmRPZHc9PTwvUT48RFA+alhPcGR4SVpOdnJjSjdSaUtmZnN4OVFKWmU3NC9sNUc1SVhVbUFMVlNRRisrQ0JtWWxhU1E1UTM3UytjdkF5S3pUL0lLOFllMEhDUldtYzNJKzBjNlE9PTwvRFA+PERRPlZsQjhxTndIRWRTeHZHb2kybnBEOUhOUlhTTWhvNkFKNkFob0NscXB1STZMTUtzR3luTzczanNnM3BodDlHK1p2NVFmTHR2bExrZVlIWDlZTWozbUxRPT08L0RRPjxJbnZlcnNlUT5FdHdBQkdweS9jdW1JeEhJNVFHUEhNNzB0dFJNdks4ekNtVGdKYWpMRTMzenJYZnFLblNIVTFMQnNuSngyMFBpK25Hb3NCY3Q4R2loRnUvTlJNdldtUT09PC9JbnZlcnNlUT48RD5QRWc1UkN1d1lJSFZEQmdWY1dlWEQ5cTZUc1VRc0VhMmdLN0dtVzNZdzBqNzNELzcyeFF6SCtKRXQ1RHVNVzNoRFd0RDY3SkM4QU5qaFU0WUtReWFDTmkxYlRKNEZSYkdSL2g4UllKSVd6L2lnOU55Q3ZkMXVjblhXRDJkdjJ2MVZzUFA0Ny9zelBlRk5ZNEpFSlEwbXFNdHRqbDJXVlhtMG1JclJYSlFBQkU9PC9EPjwvUlNBS2V5VmFsdWU+

Esta ultima cadena que se muestra es el valor que debe ir en el elemento llaveCertificado. Obviamente esta cadena cambia dependiendo de la llave privada de cada emisor.

Esperamos esto ayude a resolver las dudas.

Saludos


Cómo se obtiene este valor ?

Gracias por su tiempo...

Saludos.
Arturo Ramos
www.ircsasoftware.com.mx
Cancún, México.

Avatar de Usuario
Dado
Mensajes: 15838
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Cadena XML de la llave privada en base 64 ?

Mensajepor Dado » Vie Oct 28, 2011 10:18 am

Lo que tienes que buscar aqui en el foro es como "convertir de format DER a formato PEM"

Busca la palabra clave "passin" tambien (recuerdo que ese era el commando de openssl para darle la clave de llave privada)

Yo ando ocupadillo si no te ponia toda la ruta pero creo que con estas pistas te puedes dar una idea.

Saludos,
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

IRCSA
Mensajes: 53
Registrado: Sab Nov 20, 2010 8:20 pm
Ubicación: Canún, México
Contactar:

Re: Cadena XML de la llave privada en base 64 ?

Mensajepor IRCSA » Vie Oct 28, 2011 11:19 am

Yo lo busco, gracias.

Saludos.
Arturo Ramos
www.ircsasoftware.com.mx
Cancún, México.

IRCSA
Mensajes: 53
Registrado: Sab Nov 20, 2010 8:20 pm
Ubicación: Canún, México
Contactar:

Re: Cadena XML de la llave privada en base 64 ?

Mensajepor IRCSA » Vie Oct 28, 2011 11:45 am

Es esta ?

Código: Seleccionar todo

openssl pkcs8 -inform DER -in miarchivo.key -passin pass:micontrasena -out archivosalida.pem


Me regresa un valor diferente al que muestran en la ayuda pero pruebo... para eso es el WS de pruebas, no !! :D

Saludos.
Arturo Ramos
www.ircsasoftware.com.mx
Cancún, México.

Avatar de Usuario
Dado
Mensajes: 15838
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Cadena XML de la llave privada en base 64 ?

Mensajepor Dado » Vie Oct 28, 2011 11:59 am

IRCSA escribió:Es esta ?

Código: Seleccionar todo

openssl pkcs8 -inform DER -in miarchivo.key -passin pass:micontrasena -out archivosalida.pem


Me regresa un valor diferente al que muestran en la ayuda pero pruebo... para eso es el WS de pruebas, no !! :D

Saludos.


sip es esa

un ultimo detalle

PUEDES ABRIR el archivo resultante y ver que tiene un encabezado :

----BEGIN PRIVATE KEY (o algo asi) --------
udfhpf ajd aisjd oapsjd as
da sjoid jasoidj aiosjd a
sd aisjd aoisjd oaisjd asd
---------END PRIVATE KEY------------

DEBES QUITARLE EL "----------BEGIN PRIVATE KEY-----------" Y EL "-------------END PRIVATE KEY------------"
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

IRCSA
Mensajes: 53
Registrado: Sab Nov 20, 2010 8:20 pm
Ubicación: Canún, México
Contactar:

Re: Cadena XML de la llave privada en base 64 ?

Mensajepor IRCSA » Lun Nov 07, 2011 11:38 am

Sigo con esto,

No he podido cancelar me dicen que la cadena de la llave no es correcta, en las instrucciones dicen:
La llave privada es el XML contenido dentro del archivo .key .
Este XML es el que se pasa a base64 y se pone en el valor del elemento llaveCertificado.


Estoy utilizando el comando de openssl pero lo que el PAC me dice es que regresa una cadena diferente a la que debería

Código: Seleccionar todo

openssl pkcs8 -inform DER -in miarchivo.key -passin pass:micontrasena -out archivosalida.pem


Con este comando recibo:
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBANSh42bapBL9RAk4Lmz5A... y más


Y debe ser algo así:
PFJTQUtleVZhbHVlPjxNb2R1bHVzPjFLSGpadHFrRXYxRUNUZ3ViUGtCejZLckYyb1Z5Y0... y más


Alguna idea?

Gracias foro, Saludos.
Arturo Ramos
www.ircsasoftware.com.mx
Cancún, México.

Avatar de Usuario
Dado
Mensajes: 15838
Registrado: Mar Jul 06, 2010 7:56 pm

Re: Cadena XML de la llave privada en base 64 ?

Mensajepor Dado » Lun Nov 07, 2011 11:43 am

Tambien asegurate de quitarle los retornos de carro #0D y #0A a la llave, aver si asi.....

Con que PAC estas tratando de cancelar?
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

IRCSA
Mensajes: 53
Registrado: Sab Nov 20, 2010 8:20 pm
Ubicación: Canún, México
Contactar:

Re: Cadena XML de la llave privada en base 64 ?

Mensajepor IRCSA » Lun Nov 07, 2011 3:59 pm

Si se los estoy quitando...

es con FacturadorElectronico.com

A que cosas... ummm
Arturo Ramos
www.ircsasoftware.com.mx
Cancún, México.

IRCSA
Mensajes: 53
Registrado: Sab Nov 20, 2010 8:20 pm
Ubicación: Canún, México
Contactar:

Re: Cadena XML de la llave privada en base 64 ?

Mensajepor IRCSA » Mar Nov 08, 2011 8:01 pm

Continuo con este problema, voy poniendo lo que tengo por si a alguien le sirve.

Ya se que lo que necesito es el: RSAKeyValue XML format

Encontré esta utilería que me muestra en pantalla el dato que estoy buscando:
http://www.jensign.com/opensslkey/index.html

genera:

...
Created an RSACryptoServiceProvider instance

XML RSA private key: 1024 bits
<RSAKeyValue><Modulus>zEYOvSjhN+o4bmBJAZ4d5L1NcEDpMXDQqOtey5/4LCbLIBDaW8pHSqL/C
9fZ2lpEUYBd+Os+OBBOyMzsdZVKfQB/oH3JJ0SEw0ZcYzhlhF3btUrNw+fugoHGk0xZnA8aCCYb1oTI
aFeG8U40sp8IKpyxU0kAYgg/oME5xf2Jk=</Modulus><Exponent>AQAB</Exponent><P>/Q2MSqg
hpfxWwtiewHXACF2j9fan5JwR4nMAsFWn2IalceHAB8EyJD+q7ON05jKoMvtG/IejudNLJxwM8G4wQ=
</P><Q>zqcUPjlKXNPkhT8KXPe3W7UZAScvBhVe3KpWbgg9yZCAaJi7ShcKW/Ncq8vSld5R1YJ1WfEv
olV1vhTjvR92Q==</Q><DP>2mASrWql15zP3+3XMqfHzokSM9fnBsXstw+nSsll421Z29+wFN6v1hWq
Komvm+gjVruZ6tty4y4AMOP4FpRAQ==</DP><DQ>gMPS9UK1d0oA5pX1WyBvfBFH11QXFO9UAKOS31T
SxFjMcmZSf05Uzo80D9cpE23KBb2EGkcUBNbDWwGhNkLYQ==</DQ><InverseQ>l5JahF7oUbYbEFko
7tqWw2+6AOkFlsEhKqP4fqgtKhw5r5krrDRCx05xqJlsQo7COXreImDrRIFkEPaMHoGgg==</Invers
Q><D>CYzc84sNvId+y+pEf4bc7uzKygy+2kjj+IHIlMyN1cKajI09KD10x9CHC/0ZgMQ03VHgj7JdS+
wJ0umBxJ2OMJpm5MhqKllVEbcBuROVM3xD38ocZcauCi2jFAJqpAcqzKGXdT4CQZ09t87ZjsXGULaoz
PowCTuHjNazZJ8AE=</D></RSAKeyValue>
...


El problema es que no hay forma de mandar la salida a un archivo o de alguna forma 'capturarla' para 'automatizar' la obtención del dato.

Utilizando esta otra utilería, un amigo me ayudó a obtener una parte del XML ahora si en un archivo, el problema es que no se por que esta no funciona en mi equipo:
http://www.aleksey.com/xmlsec/

Con estos comandos, partiendo del PEM del .key:

Código: Seleccionar todo


openssl pkcs8 -inform DER -in archivo_llave.key -passin pass:12345678 -out archivo_llave.pem
xmlsec.exe --keys --pkcs8-pem archivo_llave.pem rsakeyxml.txt


obtengo:

<?xml version="1.0"?>
<Keys xmlns="http://www.aleksey.com/xmlsec/2002">
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyValue>
<RSAKeyValue>
<Modulus>
1KHjZtqkEv1ECTgubPkBz6KrF2oVycKyjtDCHGOsr0iSc8pSRVU8L0BFIxMX5X3b
c00C6BxrZDo/f/CIjusnmSX7dO7SXM0EC6VBeBh4PcHz9cVTQ9tLJMnuxH60xkyQ
XQCmoYPUxWNtLX5N8NWmwRUGlfo9SFL8VgsP3X8bnZk=
</Modulus>
<Exponent>
AQAB
</Exponent>
<PrivateExponent xmlns="http://www.aleksey.com/xmlsec/2002">
PEg5RCuwYIHVDBgVcWeXD9q6TsUQsEa2gK7GmW3Yw0j73D/72xQzH+JEt5DuMW3h
DWtD67JC8ANjhU4YKQyaCNi1bTJ4FRbGR/h8RYJIWz/ig9NyCvd1ucnXWD2dv2v1
VsPP47/szPeFNY4JEJQ0mqMttjl2WVXm0mIrRXJQABE=
</PrivateExponent>
</RSAKeyValue>
</KeyValue>
</KeyInfo>
</Keys>


Es una parte pero es un avance, bueno, si hago que la librería funcione en mi computadora =(

Algunas referencias adicionales:
Me dicen que con cryptosys se puede, no le he verificado, intentare no tener que cambiar, http://www.cryptosys.net/pki/hexkeyimport.html
Esta es la salida completa de la primera utilería, igual y hay datos de utilidad para otras funciones, http://www.jensign.com/opensslkey/sampleout.txt

Bueno, en cuanto este resuelto les informo; si alguien tiene una idea de cómo hacerlo mejor.

Saludos.
Arturo Ramos
www.ircsasoftware.com.mx
Cancún, México.

sortiz
Mensajes: 7
Registrado: Mié Nov 23, 2011 3:02 pm

Re: Cadena XML de la llave privada en base 64 ?

Mensajepor sortiz » Mié Nov 23, 2011 3:28 pm

Por principio de cuentas, cualquiera que te pida le envíes tu llave privada, no entiende nada de criptografía! Con ella tu firmas (o sellas) documentos y tu contraparte valida tu firma o sello usando tu llave pública, que obtiene de tu certificado.

Yo desconfiaría sobremanera de un PAC cuya solución requiere del envió de tu llave privada, sin importar el medio o el formato, se llama "Llave privada" por que el único que debe tener acceso a ella eres tu y sólo tu. Si tu PAC requiere validar que tu solicitud es auténtica necesita proporcionarte algún mecanismo para que tu firmes o selles esa solicitud sin que tengas que *enviar* la llave privada, de forma similar a como lo hace solcedi, por ejemplo.

Respecto a tu pregunta, en perl hay un módulo "Crypt::OpenSSL::RSA" que puede desempacar llaves RSA (de las que estamos hablando) y darte sus componentes, de ahí, codificarlos en Base64 y ensobretarlos en XML es trivial.

Saludops.


Volver a “OpenSSL en general (cualquier lenguaje)”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados