
DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.
CARTA PORTE V3.1
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
.
Duda de Como Autentificarse en los WebService de Descarga de los XML
-
- Mensajes: 118
- Registrado: Lun Dic 16, 2013 5:55 pm
Re: Duda de Como Autentificarse en los WebService de Descarga de los XML
Es correcto todo lo que mecionas, asi es el flujo de trabajo
-
- Mensajes: 51
- Registrado: Mié Ago 08, 2018 1:30 pm
Re: Duda de Como Autentificarse en los WebService de Descarga de los XML
@crono81crono81 escribió:Es correcto todo lo que mecionas, asi es el flujo de trabajo
Hola que tal, solo para confirmar.
En el SignatureValue veo que aquí dicen que va el certificado, pero que parte del certificado?
O debe de ir el modulo "<modulus>" del KEY?
Saludos
-
- Mensajes: 118
- Registrado: Lun Dic 16, 2013 5:55 pm
Re: Duda de Como Autentificarse en los WebService de Descarga de los XML
Esteban, te pongo el proceso completo:
Primero, obtienes el nodo timestamp
y le calculas el hash y lo pasas a base64 dando como resultado esto (claro que al cambiar las fechas vas a sacar un hash diferente):
iZr7Z5WND4/b4cPlJZj19KbtObQ=
Luego este hash lo incorporas al nodo signedinfo asi:
Este nodo lo vas a sellar como si fuera un cfdi, lo cual te va a dar como resultado una cadena asi:
Esta cadena la incorporas al request, quedando así:
La cadena de texto enorme que está dentro de este nodo
es el certificado en base64
Primero, obtienes el nodo timestamp
Código: Seleccionar todo
<u:Timestamp xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" u:Id="_0"><u:Created>2018-09-26T20:36:40.520Z</u:Created><u:Expires>2018-09-26T20:41:40.520Z</u:Expires></u:Timestamp>
iZr7Z5WND4/b4cPlJZj19KbtObQ=
Luego este hash lo incorporas al nodo signedinfo asi:
Código: Seleccionar todo
<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI="#_0"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>iZr7Z5WND4/b4cPlJZj19KbtObQ=</DigestValue></Reference></SignedInfo>
Código: Seleccionar todo
fqU4yPgeaS4ml3lykAO6FzQk/k7JMBXPXd+TH94YsJZbVIp2JXdz2iqh9ncPN9RZzP1hiWJqPXmIp+Zaxe9ylCr0x239KkI5TpRlScyZT2P+LatiXLA8kQp/eRJzk43/nPeKz3DRfXq7H8ttLqW1ZCWstLd67fXhaYhVr1wBVfsQ4YrE3Gvr3ymXKMN8k940VzE49HKH1bLPMO6VExIGvoTuziV2oaIVZACdlVcjilEEFGXQBJX0jaJ9oBjnUT0KOABjtvdfGCv/UYoa0OyNyR3ld4vFsj64Ekj+VOIx3f5a4ghde1AeJt6o4HzsEL10kzAAW2BklwqpUeWmLzeV/Q==
Código: Seleccionar todo
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<u:Timestamp u:Id="_0">
<u:Created>2018-09-26T15:40:02.763Z</u:Created>
<u:Expires>2018-09-26T15:45:02.763Z</u:Expires>
</u:Timestamp>
<o:BinarySecurityToken u:Id="uuid-7de252ad-a383-458d-a467-8aadb076df4f-1" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">MIIFxTCCA62gAwIBAgIUMjAwMDEwMDAwMDAzMDAwMjI4MTUwDQYJKoZIhvcNAQELBQAwggFmMSAwHgYDVQQDDBdBLkMuIDIgZGUgcHJ1ZWJhcyg0MDk2KTEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExODA2BgNVBAsML0FkbWluaXN0cmFjacOzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNpw7NuMSkwJwYJKoZIhvcNAQkBFhphc2lzbmV0QHBydWViYXMuc2F0LmdvYi5teDEmMCQGA1UECQwdQXYuIEhpZGFsZ28gNzcsIENvbC4gR3VlcnJlcm8xDjAMBgNVBBEMBTA2MzAwMQswCQYDVQQGEwJNWDEZMBcGA1UECAwQRGlzdHJpdG8gRmVkZXJhbDESMBAGA1UEBwwJQ295b2Fjw6FuMRUwEwYDVQQtEwxTQVQ5NzA3MDFOTjMxITAfBgkqhkiG9w0BCQIMElJlc3BvbnNhYmxlOiBBQ0RNQTAeFw0xNjEwMjUyMTUyMTFaFw0yMDEwMjUyMTUyMTFaMIGxMRowGAYDVQQDExFDSU5ERU1FWCBTQSBERSBDVjEaMBgGA1UEKRMRQ0lOREVNRVggU0EgREUgQ1YxGjAYBgNVBAoTEUNJTkRFTUVYIFNBIERFIENWMSUwIwYDVQQtExxMQU43MDA4MTczUjUgLyBGVUFCNzcwMTE3QlhBMR4wHAYDVQQFExUgLyBGVUFCNzcwMTE3TURGUk5OMDkxFDASBgNVBAsUC1BydWViYV9DRkRJMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgvvCiCFDFVaYX7xdVRhp/38ULWto/LKDSZy1yrXKpaqFXqERJWF78YHKf3N5GBoXgzwFPuDX+5kvY5wtYNxx/Owu2shNZqFFh6EKsysQMeP5rz6kE1gFYenaPEUP9zj+h0bL3xR5aqoTsqGF24mKBLoiaK44pXBzGzgsxZishVJVM6XbzNJVonEUNbI25DhgWAd86f2aU3BmOH2K1RZx41dtTT56UsszJls4tPFODr/caWuZEuUvLp1M3nj7Dyu88mhD2f+1fA/g7kzcU/1tcpFXF/rIy93APvkU72jwvkrnprzs+SnG81+/F16ahuGsb2EZ88dKHwqxEkwzhMyTbQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAJ/xkL8I+fpilZP+9aO8n93+20XxVomLJjeSL+Ng2ErL2GgatpLuN5JknFBkZAhxVIgMaTS23zzk1RLtRaYvH83lBH5E+M+kEjFGp14Fne1iV2Pm3vL4jeLmzHgY1Kf5HmeVrrp4PU7WQg16VpyHaJ/eonPNiEBUjcyQ1iFfkzJmnSJvDGtfQK2TiEolDJApYv0OWdm4is9Bsfi9j6lI9/T6MNZ+/LM2L/t72Vau4r7m94JDEzaO3A0wHAtQ97fjBfBiO5M8AEISAV7eZidIl3iaJJHkQbBYiiW2gikreUZKPUX0HmlnIqqQcBJhWKRu6Nqk6aZBTETLLpGrvF9OArV1JSsbdw/ZH+P88RAt5em5/gjwwtFlNHyiKG5w+UFpaZOK3gZP0su0sa6dlPeQ9EL4JlFkGqQCgSQ+NOsXqaOavgoP5VLykLwuGnwIUnuhBTVeDbzpgrg9LuF5dYp/zs+Y9ScJqe5VMAagLSYTShNtN8luV7LvxF9pgWwZdcM7lUwqJmUddCiZqdngg3vzTactMToG16gZA4CWnMgbU4E+r541+FNMpgAZNvs2CiW/eApfaaQojsZEAHDsDv4L5n3M1CC7fYjE/d61aSng1LaO6T1mh+dEfPvLzp7zyzz+UgWMhi5Cs4pcXx1eic5r7uxPoBwcCTt3YI1jKVVnV7/w=</o:BinarySecurityToken>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#_0">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>iZr7Z5WND4/b4cPlJZj19KbtObQ=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>fqU4yPgeaS4ml3lykAO6FzQk/k7JMBXPXd+TH94YsJZbVIp2JXdz2iqh9ncPN9RZzP1hiWJqPXmIp+Zaxe9ylCr0x239KkI5TpRlScyZT2P+LatiXLA8kQp/eRJzk43/nPeKz3DRfXq7H8ttLqW1ZCWstLd67fXhaYhVr1wBVfsQ4YrE3Gvr3ymXKMN8k940VzE49HKH1bLPMO6VExIGvoTuziV2oaIVZACdlVcjilEEFGXQBJX0jaJ9oBjnUT0KOABjtvdfGCv/UYoa0OyNyR3ld4vFsj64Ekj+VOIx3f5a4ghde1AeJt6o4HzsEL10kzAAW2BklwqpUeWmLzeV/Q==</SignatureValue>
<KeyInfo>
<o:SecurityTokenReference>
<o:Reference ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" URI="#uuid-7de252ad-a383-458d-a467-8aadb076df4f-1"/>
</o:SecurityTokenReference>
</KeyInfo>
</Signature>
</o:Security>
</s:Header>
<s:Body>
<Autentica xmlns="http://DescargaMasivaTerceros.gob.mx"/>
</s:Body>
</s:Envelope>
Código: Seleccionar todo
<o:BinarySecurityToken u:Id="uuid-7de252ad-a383-458d-a467-8aadb076df4f-1" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
-
- Mensajes: 51
- Registrado: Mié Ago 08, 2018 1:30 pm
Re: Duda de Como Autentificarse en los WebService de Descarga de los XML
@crono81.
Muchas gracias
Está muy bien explicado el proceso. Solo me queda una duda, perdón por mi ignorancia.
Nunca he sellado un CFDi, este dato de donde lo obtienes, es del CER, o del KEY?:
Y lleva algún tipo de SHA o de Base64?
Saludos
Muchas gracias
Está muy bien explicado el proceso. Solo me queda una duda, perdón por mi ignorancia.
Nunca he sellado un CFDi, este dato de donde lo obtienes, es del CER, o del KEY?:
Código: Seleccionar todo
fqU4yPgeaS4ml3lykAO6FzQk/k7JMBXPXd+TH94YsJZbVIp2JXdz2iqh9ncPN9RZzP1hiWJqPXmIp+Zaxe9ylCr0x239KkI5TpRlScyZT2P+LatiXLA8kQp/eRJzk43/nPeKz3DRfXq7H8ttLqW1ZCWstLd67fXhaYhVr1wBVfsQ4YrE3Gvr3ymXKMN8k940VzE49HKH1bLPMO6VExIGvoTuziV2oaIVZACdlVcjilEEFGXQBJX0jaJ9oBjnUT0KOABjtvdfGCv/UYoa0OyNyR3ld4vFsj64Ekj+VOIx3f5a4ghde1AeJt6o4HzsEL10kzAAW2BklwqpUeWmLzeV/Q==
Saludos
-
- Mensajes: 51
- Registrado: Mié Ago 08, 2018 1:30 pm
Re: Duda de Como Autentificarse en los WebService de Descarga de los XML
Será el Serial Number del Certificado en Base64 lo que va dentro de Signature Value, o sea como tengo que firmar?
- Dado
- Mensajes: 15981
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: Duda de Como Autentificarse en los WebService de Descarga de los XML
El Sello digital lo tienes que calcular usando OpenSSL (o alguna libreria de criptografia)
Busca aqui en el foro, recuerdo que puse un tutorial de como hacer el sello manualmente, paso a paso, estoy hablando de mensajes de hace 8 o mas años
Solo considera que en lugar de "cadena original" se sustituye por el nodo <TimeStamp> que tanto trabajo nos costo encontrar
Busca aqui en el foro, recuerdo que puse un tutorial de como hacer el sello manualmente, paso a paso, estoy hablando de mensajes de hace 8 o mas años
Solo considera que en lugar de "cadena original" se sustituye por el nodo <TimeStamp> que tanto trabajo nos costo encontrar
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 51
- Registrado: Mié Ago 08, 2018 1:30 pm
Re: Duda de Como Autentificarse en los WebService de Descarga de los XML
oooooDADO escribió:El Sello digital lo tienes que calcular usando OpenSSL (o alguna libreria de criptografia)
Busca aqui en el foro, recuerdo que puse un tutorial de como hacer el sello manualmente, paso a paso, estoy hablando de mensajes de hace 8 o mas años
Solo considera que en lugar de "cadena original" se sustituye por el nodo <TimeStamp> que tanto trabajo nos costo encontrar
Es cierto, creo que ya vi donde está: aqui
Si, para FIRMAR una cadena DEBES USAR :
openssl dgst -md5 -out sign.bin -sign KEY.PEM CadOri.txt
Alcanzo a entender lo Siguiente.
1) Usamos openSSL como libreria de criptografia
2) usamos dgst o Digest, le metemos md5
3) Sign.bin "Voy a investigar que onda con esto"
4) Key.Pem el Archivo KEY de la FIEL o e.firma
5) CadIOri.txt el Texto a sellar, en el caso de una factura, es la cadena digital, pero en este caso me parece que tendría que ser todo el Request.xml cierto?
Seguiré estudiando esto.
Saludos
-
- Mensajes: 118
- Registrado: Lun Dic 16, 2013 5:55 pm
Re: Duda de Como Autentificarse en los WebService de Descarga de los XML
En el paso 2, en lugar de usar md5 debe ser sha1
En el paso 5 no sería todo el request, sino solo el nodo
En el paso 5 no sería todo el request, sino solo el nodo
Código: Seleccionar todo
<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI="#_0"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>iZr7Z5WND4/b4cPlJZj19KbtObQ=</DigestValue></Reference></SignedInfo>
- Dado
- Mensajes: 15981
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: Duda de Como Autentificarse en los WebService de Descarga de los XML
sign.bin es el nombre del archivo con el SELLO BINARIO
Busca tambien como se convierte ese archivo a un SELLO EN BASE 64
Y si, perdon por decirlo mal, no se sella el nodo <TimeStamp>, haz caso a crono81, se sella el nodo <SignedInfo> ..... pfff es que con tanta informacion ya se me revuelven las ideas
Busca tambien como se convierte ese archivo a un SELLO EN BASE 64
Y si, perdon por decirlo mal, no se sella el nodo <TimeStamp>, haz caso a crono81, se sella el nodo <SignedInfo> ..... pfff es que con tanta informacion ya se me revuelven las ideas
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!
-
- Mensajes: 51
- Registrado: Mié Ago 08, 2018 1:30 pm
Re: Duda de Como Autentificarse en los WebService de Descarga de los XML
JejejejejejejeDADO escribió:sign.bin es el nombre del archivo con el SELLO BINARIO
Busca tambien como se convierte ese archivo a un SELLO EN BASE 64
Y si, perdon por decirlo mal, no se sella el nodo <TimeStamp>, haz caso a crono81, se sella el nodo <SignedInfo> ..... pfff es que con tanta informacion ya se me revuelven las ideas
estoy bien burro, ya leí bien.
Sign.bin es el archivo de salida, resultante del Digest, de la encripcion con método SHA1, Usando la KEY de la FIEL (e.Firma), Codificando el nodo:
Código: Seleccionar todo
<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI="#_0"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>iZr7Z5WND4/b4cPlJZj19KbtObQ=</DigestValue></Reference></SignedInfo>
De allí esa resultante sign.bin, deberé transformarlo a Base64, y acto seguido Inyectarlo en <SIgnature Value>