Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Proyecto SIF/Veri*Factu/Ley Antifraude > Envío de registros y sus respuestas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-06-2025
FacilIng FacilIng is offline
Miembro
 
Registrado: may 2025
Posts: 74
Poder: 2
FacilIng Va por buen camino
Question La AEAT no me acepta el certificado digital

Buenos días a tod@s ...

Estoy intentando hacer mi primer envío de un RdF a la AEAT y, lo que menos me esperaba yo, es que me devolviese un error en HTML indicando que el certificado no es válido.
He cogido el código HTML que me devuelve la AEAT en "responseFromServer" y lo he metido en un WebBrowser. Podéis verlo en la imagen adjunta.
También adjunto todo el texto devuelto en la variable "responseFromServer".
Básicamente lo que me dice es que el certificado electrónico no es válido ... ¡pero sí lo es!
Es el certificado electrónico (micertificado.p12) emitido por la FNMT que utilizamos en mi empresa para conectarnos a la Seguridad Social, a Hacienda, etc.

El código que uso es el siguiente:

Código:
      'Establecemos el protocolo TLS 1.2 ...
      ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
      '4) Realizamos el envío al Webservice de la AEAT --------------------------------------------------------------------------
      '4.1) Definimos el objeto "request" par conectarnos al webservice ...
      varError = 40
      Dim DireccionWebService As String = "https :// prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP" 'TEST (sin los espacios, que no me deja poner enlaces)
      Dim request As HttpWebRequest = HttpWebRequest.Create(DireccionWebService)
      request.Method = "POST"
      request.ContentType = "text/xml; charset=utf-8"
      request.Accept = "text/xml"
      request.Timeout = 60000 'Le damos 60 segundos al servidor para contestar ...
      '4.2) Añadimos el certificado de autenticación para la AEAT al objeto "request" ...
      varError = 50
      Dim miCertificado As String = "micertificado.p12"
      Dim miContraseña As String = "micontraseña"
      Dim cert As New System.Security.Cryptography.X509Certificates.X509Certificate2
      cert.Import(miCertificado, miContraseña, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags.DefaultKeySet)
      request.ClientCertificates.Add(cert)
      '4.3) Preparamos la petición al webservice ...
      varError = 60
      Dim byteArray As Byte() = Encoding.UTF8.GetBytes(lSOAPEnvelope)
      request.ContentLength = byteArray.Length
      Dim dataStream As Stream = request.GetRequestStream()
      dataStream.Write(byteArray, 0, byteArray.Length)
      dataStream.Close()
      '4.4) Envío la petición y obtengo la respuesta ...
      varError = 70
      Dim response As HttpWebResponse = request.GetResponse()
      dataStream = response.GetResponseStream()
      Dim reader As New StreamReader(dataStream)
      Dim responseFromServer As String = reader.ReadToEnd()
      reader.Close() : reader = Nothing
      dataStream.Close() : dataStream = Nothing
      response.Close() : response = Nothing

      '5) Devolvemos la respuesta -----------------------------------------------------------------------------------------------
      varError = 90
      pMSGRetorno = responseFromServer
      Return True
¿Alguien me podría decir en qué me estoy equivocando o qué estoy haciendo mal?
La verdad es que no es la primera vez que hago peticiones con certificado a un WS y no me había pasado esto nunca.

Muchísimas gracias!
Imágenes Adjuntas
Tipo de Archivo: png Error 403.png (28,0 KB, 210 visitas)
Archivos Adjuntos
Tipo de Archivo: txt responseFromServer.txt (8,1 KB, 5 visitas)
Responder Con Cita
  #2  
Antiguo 18-06-2025
novatico novatico is offline
Miembro
 
Registrado: dic 2022
Posts: 371
Poder: 4
novatico Va por buen camino
Cita:
Empezado por FacilIng Ver Mensaje
Buenos días a tod@s ...

Estoy intentando hacer mi primer envío de un RdF a la AEAT y, lo que menos me esperaba yo, es que me devolviese un error en HTML indicando que el certificado no es válido.
He cogido el código HTML que me devuelve la AEAT en "responseFromServer" y lo he metido en un WebBrowser. Podéis verlo en la imagen adjunta.
También adjunto todo el texto devuelto en la variable "responseFromServer".
Básicamente lo que me dice es que el certificado electrónico no es válido ... ¡pero sí lo es!
Es el certificado electrónico (micertificado.p12) emitido por la FNMT que utilizamos en mi empresa para conectarnos a la Seguridad Social, a Hacienda, etc.

El código que uso es el siguiente:

Código:
      'Establecemos el protocolo TLS 1.2 ...
      ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
      '4) Realizamos el envío al Webservice de la AEAT --------------------------------------------------------------------------
      '4.1) Definimos el objeto "request" par conectarnos al webservice ...
      varError = 40
      Dim DireccionWebService As String = "https :// prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP" 'TEST (sin los espacios, que no me deja poner enlaces)
      Dim request As HttpWebRequest = HttpWebRequest.Create(DireccionWebService)
      request.Method = "POST"
      request.ContentType = "text/xml; charset=utf-8"
      request.Accept = "text/xml"
      request.Timeout = 60000 'Le damos 60 segundos al servidor para contestar ...
      '4.2) Añadimos el certificado de autenticación para la AEAT al objeto "request" ...
      varError = 50
      Dim miCertificado As String = "micertificado.p12"
      Dim miContraseña As String = "micontraseña"
      Dim cert As New System.Security.Cryptography.X509Certificates.X509Certificate2
      cert.Import(miCertificado, miContraseña, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags.DefaultKeySet)
      request.ClientCertificates.Add(cert)
      '4.3) Preparamos la petición al webservice ...
      varError = 60
      Dim byteArray As Byte() = Encoding.UTF8.GetBytes(lSOAPEnvelope)
      request.ContentLength = byteArray.Length
      Dim dataStream As Stream = request.GetRequestStream()
      dataStream.Write(byteArray, 0, byteArray.Length)
      dataStream.Close()
      '4.4) Envío la petición y obtengo la respuesta ...
      varError = 70
      Dim response As HttpWebResponse = request.GetResponse()
      dataStream = response.GetResponseStream()
      Dim reader As New StreamReader(dataStream)
      Dim responseFromServer As String = reader.ReadToEnd()
      reader.Close() : reader = Nothing
      dataStream.Close() : dataStream = Nothing
      response.Close() : response = Nothing

      '5) Devolvemos la respuesta -----------------------------------------------------------------------------------------------
      varError = 90
      pMSGRetorno = responseFromServer
      Return True
¿Alguien me podría decir en qué me estoy equivocando o qué estoy haciendo mal?
La verdad es que no es la primera vez que hago peticiones con certificado a un WS y no me había pasado esto nunca.

Muchísimas gracias!

¿ Puedes ser que hayas renovado el certificado y no hayas desinstalado el caducado ?
Responder Con Cita
  #3  
Antiguo 18-06-2025
FacilIng FacilIng is offline
Miembro
 
Registrado: may 2025
Posts: 74
Poder: 2
FacilIng Va por buen camino
Cita:
Empezado por novatico Ver Mensaje
¿ Puedes ser que hayas renovado el certificado y no hayas desinstalado el caducado ?
El certificado es válido hasta el 27/09/2025 ...
Y no lo tengo instalado en Windows, ni éste ni ninguno ...
Como se ve en el código, lo cojo directamente de disco (archivo "micertificado.p12") ...
Responder Con Cita
  #4  
Antiguo 18-06-2025
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Yo probaría con los certificados "de prueba" de la AEAT.
Puedes solicitarlos.

Más que nada para descartar.
a) Si con el de prueba falla, es que hay algo en el código que no está bien.
b) Si con el de prueba funciona, es que es algo del certificado que estás utilizando.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 18-06-2025
rci rci is offline
Miembro
 
Registrado: nov 2020
Posts: 565
Poder: 6
rci Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Yo probaría con los certificados "de prueba" de la AEAT.
Puedes solicitarlos.
Es una buena idea pero ten en cuenta que están apunto de caducar, en concreto el 02/07/2025 y el 11/07/2025.
De momento no los han renovado, pero ya nos han dicho que se tendrán que volver a solicitar...
Responder Con Cita
  #6  
Antiguo 18-06-2025
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por rci Ver Mensaje
Es una buena idea pero ten en cuenta que están apunto de caducar, en concreto el 02/07/2025 y el 11/07/2025.
De momento no los han renovado, pero ya nos han dicho que se tendrán que volver a solicitar...
También habrá que ver qué hacen cuando envíes con uno caducado.
En el caso de TicketBai, por ejemplo, al principio las aceptaban con errores y te avisaban de que tenías que renovarlo. Durante un tiempo te iba saliendo este aviso.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 15-07-2025
aposi aposi is offline
Miembro
 
Registrado: dic 2006
Posts: 159
Poder: 20
aposi Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Yo probaría con los certificados "de prueba" de la AEAT.
Puedes solicitarlos.

Más que nada para descartar.
a) Si con el de prueba falla, es que hay algo en el código que no está bien.
b) Si con el de prueba funciona, es que es algo del certificado que estás utilizando.


Donde se puede pedir el certificado de prueba?

Nada. he encontrado el correo electronico: [email protected]

Última edición por aposi fecha: 15-07-2025 a las 17:36:23.
Responder Con Cita
  #8  
Antiguo 16-07-2025
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
https://www.clubdelphi.com/foros/sho...d.php?p=562700

Una rápida búsqueda en los foros...
"Se piden a este correo, pides un certificado de pruebas, te mandaran un formulario, lo rellenas y ya te mandaran el certificado.
[email protected]"
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 01-09-2025
Fernando_58 Fernando_58 is offline
Miembro
 
Registrado: jul 2025
Posts: 23
Poder: 0
Fernando_58 Va por buen camino
Pregunta de novato en problemas

Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Yo probaría con los certificados "de prueba" de la AEAT.
Puedes solicitarlos.

Más que nada para descartar.
a) Si con el de prueba falla, es que hay algo en el código que no está bien.
b) Si con el de prueba funciona, es que es algo del certificado que estás utilizando.
Dónde se solicita el certificado de pruebas?
Responder Con Cita
  #10  
Antiguo 02-09-2025
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Fernando_58 Ver Mensaje
Dónde se solicita el certificado de pruebas?
Busca en los foros.
Hay un hilo dedicado a ello.
Mandas un correo, te envían un formulario, lo rellenas, lo devuelves y te los envían.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Certificado o firma digital en archivo XML. AEAT rafa1963 General/Noticias 2 22-04-2025 04:49:53
IdSSL y certificado digital el-otro Internet 1 03-01-2024 11:07:43
REST CLIENT con certificado digital keys Internet 11 24-10-2019 13:38:06
Agregar Certificado Digital carlos gonzalez Varios 1 16-08-2019 09:37:15
Problemas con certificado digital Paulao Varios 3 26-09-2011 17:00:46


La franja horaria es GMT +2. Ahora son las 14:24:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi