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 ]]
Avatar de Usuario
Dado
Mensajes: 15824
Registrado: Mar Jul 06, 2010 8:56 pm

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

Mensajepor Dado » Mié Nov 23, 2011 4:50 pm

Sin tratar de defender o criticar te comento lo que yo se.

Uno como usuario tiene que enviar el certificado y la LLAVE PRIVADA junto con su CLAVE SECRETA al PAC, éste forma un REQUEST y le agrega UN TOKEN que SOLO EL PAC puede generar.

A este REQUEST que ya lleva EL TOKEN PRIVADO DEL PAC lo firma con la LLAVE PRIVADA DEL EMISOR para terminar el REQUEST el cual es enviado al SAT.

Ahora, porque de cada cosa.....El PAC necesita la LLAVE PRIVADA del Emisor para firmar y asegurar que es EL EMISOR el que tiene la voluntad de cancelar el documento, PERO el servicio de cancelacion (hasta donde yo se) solo se ofrece A LOS PAC y por eso solo ellos pueden generar ese TOKEN

RESUMEN. Se requiere DE LAS DOS FIRMAS DIGITALES (EMISOR Y PAC) para formar una solicitud de cancelacion ante el SAT

La solucion para no tener que enviar tu llave privada seria....hacer la solicitud al PAC, este genera el token, te lo envia, tu generas el request, lo firmas con tu llave, le regresas al PAC la solicitud y este lo envia al SAT......mmmh, como ves no es muy eficiente este proceso. es solo mi humilde opinion
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

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

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

Mensajepor IRCSA » Sab Nov 26, 2011 12:46 pm

sortiz escribió: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.


Conoces o trabajas con algun PAC que no necesita este dato para hacer la cancelación ?

Gracias por el dato de PERL, cómo puedo hacer uso de esto desde mis aplicaciones en VB y FoxPro ?

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

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

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

Mensajepor sortiz » Lun Dic 05, 2011 9:21 pm

DADO escribió:Sin tratar de defender o criticar te comento lo que yo se.
...
La solucion para no tener que enviar tu llave privada seria....hacer la solicitud al PAC, este genera el token, te lo envia, tu generas el request, lo firmas con tu llave, le regresas al PAC la solicitud y este lo envia al SAT......mmmh, como ves no es muy eficiente este proceso. es solo mi humilde opinion


Efectivamente el proceso debería de ser en línea y nadie debería de estar pidiendo llaves privadas, pero a los PACs les resulta más sencillo pedirle a los usuarios que les cedan sus llaves privadas a implementar una solución "correcta" en no sólo en términos informáticos sino que respete los supuestos básicos de la criptografía de llaves públicas. Es decir, no sólo cumpla la "forma" sino el "sentido" de la legislación.

El problema real es que si bien el SAT hace énfasis en que el uso de las llaves privadas es responsabilidad exclusiva de sus titulares, como la mayoría de los usuarios no saben absolutamente nada de eso (y muchos PACs, con todo respeto, tampoco) las llaves privadas terminan cambiando de manos sin el menor empacho. Y es el mismo SAT el que debería certificar que sus PACs no sólo cumplan la forma sino el fondo de la ley, pues cómo hablar de "No repudio" si al entregar mis llaves privadas, estoy en los hecho entregando el equivalente digital de un "poder" para facturar en mi nombre?

Lo más grave del caso es que en los contratos que he visto de los PACs con sus usuarios, en ninguno he visto se mencione el asunto.

Saludos.

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

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

Mensajepor sortiz » Lun Dic 05, 2011 10:48 pm

IRCSA escribió:
Conoces o trabajas con algun PAC que no necesita este dato para hacer la cancelación ?

Que no te lo pida, no, lamentablemente no.
La tecnología para hacerlo por supuesto existe, busca en la web "Proxy Certificate", por ejemplo.

Pero como comentaba en un mail anterior, entre los PACs están mas preocupados por la "forma" que por el "sentido" y mientras el SAT no meta orden (lo que es poco probable, pues lo que le interesa es la fiscalización) la cosa no cambiará mucho.

Pero al primer caso en un un PAC, por negligencia, pierda las "llaves privadas" cuya custodia y protección, obviamente, no están previstas en la matriz de requerimientos publicada; O por mala fe, haga mal uso de las mismas, las cosas comenzarán a cambiar.

IRCSA escribió:
Gracias por el dato de PERL, cómo puedo hacer uso de esto desde mis aplicaciones en VB y FoxPro ?


Son lenguajes distintos, y cada uno utiliza sus propias bibliotecas, así que no se puede en forma directa. Invocar a Perl desde VB es posible, pero ya nos estaríamos saliendo del tema del foro. Si hay interés puedo publicar unas cuantas herramientas en Perl para manipular CFDs, Certificados, llaves, etc.

Saludos.

lordrafles
Mensajes: 3
Registrado: Vie Dic 30, 2011 7:50 pm

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

Mensajepor lordrafles » Vie Dic 30, 2011 7:58 pm

IRCSA escribió: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.



Hola!
Tengo la misma necesidad (por asi llamarle), tengo como PAC a facturadorelectronico.com y me esta requiriendo lo mismo.

Estos un poco o mucho sacado de onda, por que veo que se requiere de muchos conocimientos en encriptación/desencriptación, y hay que talachar mucho para el proceso de cancelación de CFDI.

Necesito saber que has hecho, si encontraste una manera de automatizar con openssl o utilizaste alguna otra utileria o herramienta para transparentar este proceso.

Un saludo y espero tus comentarios

Gracias!

Raúl Flores

lordrafles
Mensajes: 3
Registrado: Vie Dic 30, 2011 7:50 pm

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

Mensajepor lordrafles » Vie Dic 30, 2011 8:00 pm

Alguien ha utilizado CHILKAT RSA para este proceso de obtener la llave privada?

Saludos!

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

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

Mensajepor IRCSA » Mié Ene 04, 2012 7:24 pm

lordrafles escribió:Alguien ha utilizado CHILKAT RSA para este proceso de obtener la llave privada?

Saludos!


Me dijeron que con CHILKAT es posible y me dieron estas referencias pero no lo he probado, el problema con CHILKAT es que es de pago y todos mis procesos los hago con OpenSSL, que chiste meter a estas alturas una herramienta diferente.

http://www.example-code.com/foxpro/rsa_loadPemKey.asp

No tengo una solución diferente a la que mostré más arriba, encontraste algo ?

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


Volver a “OpenSSL en general (cualquier lenguaje)”

¿Quién está conectado?

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