Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Errores (relacionados con al AEAT) (https://www.clubdelphi.com/foros/forumdisplay.php?f=78)
-   -   Windows 7 y TLS 1.2 (https://www.clubdelphi.com/foros/showthread.php?t=97823)

Noe277 04-11-2025 13:33:19

Windows 7 y TLS 1.2
 
Buenas, Tenemos un cliente con windows 7 y nos da el siguiente error en producción.

Cita:

No se pudo establecer un canal seguro para SSL/TLS con la autoridad 'www10.agenciatributaria.gob.es'.
Server stack trace:
en System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason)
en System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply (TimeSpan timeout)
en System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
en System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
en System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
en System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
en System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]:
en System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
en System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
en EvoVeri.Verifactu.sfPortTypeVerifactu.RegFactuSistemaFacturacion(RegFactuSistemaFacturacionRequest request)
en EvoVeri.Verifactu.sfPortTypeVerifactuClient.EvoVeri.Verifactu.sfPortTypeVerifactu.RegFactuSistemaFac turacion(RegFactuSistemaFacturacionRequest request)
en EvoVeri.Verifactu.sfPortTypeVerifactuClient.RegFactuSistemaFacturacion(RegFactuSistemaFacturacion RegFactuSistemaFacturacion1)
en WontaPlus.Clases.SistemaVerifactu.envio.GenerarEnvio(String rutaBD, String codEmpresa, String identificadorEquipo, String licencia, Boolean modoPruebas)

🔍 Inner Exception:
System.Net.WebException: Anulada la solicitud: No se puede crear un canal seguro SSL/TLS.
en System.Net.HttpWebRequest.GetResponse()
en System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply (TimeSpan timeout)
Hemos probado en pruebas y manda bien.
En el código estamos forzando el TlS a 1.2 y ya hemos deducido que es de ese equipo.
Hemos intentado meter todas las actualizaciones de windows pero sigue igual.

¿Alguna idea ?

Faneka 04-11-2025 13:56:46

Nosotros estamos comunicando a los clientes que el equipo que mande tiene que tener W10 o superior, algún tipo de error como ese nos dio no hace unos meses con el SII y no supimos/pudimos solucionarlo, así que nuestra solución es que salten al SO superior que si funciona, igual pasa con los Server, en el 2012 no funciona, en el 2016 ya no me acuerdo, lo que si se que del 2019 en adelante funciona el envio.

ermendalenda 04-11-2025 13:58:19

Cita:

Empezado por Noe277 (Mensaje 569378)
Buenas, Tenemos un cliente con windows 7 y nos da el siguiente error en producción.



Hemos probado en pruebas y manda bien.
En el código estamos forzando el TlS a 1.2 y ya hemos deducido que es de ese equipo.
Hemos intentado meter todas las actualizaciones de windows pero sigue igual.

¿Alguna idea ?

Si tienes antivirus revisa que no tenga los filtros tsl/ssl activado(kaspersky los tiene)

En las opciones de internet explorer, croe que era la ultima pestaña , activa los protcolos tsl 1.1 y 1.2
Tambien hay una actualizacion de w7 para activarla si nl vienen.

Faneka 04-11-2025 14:03:17

Si funciona avisa por favor, yo creo que estuve mirando y no hubo manera de que un W7 funcionara.

Jarogo08 04-11-2025 15:00:18

Nosotros, al igual que Faneka, estamos migrando todos los windows servers 2012 o anterior, y windows 7/8

No fuimos capaces de hacer que funcionara en ellos

pablog2k 04-11-2025 15:11:53

esto ya pasó en w7 con el sii, es una cosa de los servidores de hacienda que a partir de X fecha ya no permite ese tipo de peticiones.
en el hilo del SII está explicado.
Nosotros tuvimos que hacer migraciones exprés a W10 para que el cliente pudiera seguir haciendo envíos :eek:

chenech 04-11-2025 15:28:45

Hay un parche que puse yo en un equipo con Windows 7 para el SII y me deja enviar, no lo he probado con VERIFACTU, pero deberia funcionar.
La información está aqui:
https://support.microsoft.com/es-es/...0392#bkmk_easy
Y la URL de descarga:
https://catalog.update.microsoft.com...px?q=kb3140245

jakematespain 04-11-2025 15:56:56

Hola, nosotros lo hemos lo hicimos funcionar accediendo al certificado por fichero, no usando el almacen de windows.
Pero siguiendo estas indicaciones:
https://visionwin.freshdesk.com/supp...ndows-7-y-aeat

Parches para server 2008,enbeed 8, server 2008, embbed 8, server 20202 ,windows 7
https://www.catalog.update.microsoft...px?q=kb3140245

Una vez instalado el parche y el Fixit para windows 7, hay que comprobar si está activado el TLS 1.2. Entrando en panel de control, opciones de internet,
opciones avanzadas ver si aparece el TLS 1.2 y activarlo

Espero que os sirva.

ermendalenda 04-11-2025 15:59:03

Esto me paso a mi con los tpvpc y al final el tema pasaba por los certificados de conexiin a redsys que las nuevas imolementaciones de seguridad no son validas para windows 7.
Puedes probar tambien a que ponerle la opcion de curl que no verifiquw los certificados(mas inseguro).

Rja750 04-11-2025 18:50:41

Yo estoy aprovechando y estoy diciendo a mis clientes que la version minima de SO es Windows 10. No me complico. Puede dar mas de un dolor de cabeza tener el windows 7. Sobre todo si envías con Curl que en windows 7 tienes que instalarlo y añadirlo a las variables de entorno o si necesitas un FrameWork superior tener que ir instalando o añadiendo dependencias. Windows 10 y fin de la historia

newtron 04-11-2025 18:58:44

Yo igualmente no me complico la vida con W7. Al final todas esas ñapas son dolores de cabeza "de gratis" porque igual funcionan que igual no, echas horas y horas dando cabezazos y eso al final son costos que no repercutes al cliente.


Requerimientos W10 o superior y a volar.

Rja750 04-11-2025 19:08:01

Algunos de mis clientes usan el teléfono móvil como servidor de Red. Esto también lo estoy quitando. Estoy obligando a un router de banda ancha en condiciones. Vamos a aprovechar!! :D

newtron 04-11-2025 19:28:45

Cita:

Empezado por Rja750 (Mensaje 569398)
Algunos de mis clientes usan el teléfono móvil como servidor de Red. Esto también lo estoy quitando. Estoy obligando a un router de banda ancha en condiciones. Vamos a aprovechar!! :D


Maemía... ¿y no tienes ninguno que use una máquina de escribir de router? :D:D

Noe277 05-11-2025 11:47:42

Windows 7
 
Cita:

Empezado por chenech (Mensaje 569387)
Hay un parche que puse yo en un equipo con Windows 7 para el SII y me deja enviar, no lo he probado con VERIFACTU, pero deberia funcionar.
La información está aqui:
https://support.microsoft.com/es-es/...0392#bkmk_easy
Y la URL de descarga:
https://catalog.update.microsoft.com...px?q=kb3140245


Ya tenia ese parche instalado. En el registro aun así no aparecían los tls en channel pero se los creamos y nada.
Les diremos que se actualicen y maldigan a hacienda y no a nosotros por hacerles gastar mas dinero.

emailesc 09-11-2025 11:13:07

Cita:

Empezado por Noe277 (Mensaje 569437)
Ya tenia ese parche instalado. En el registro aun así no aparecían los tls en channel pero se los creamos y nada.
Les diremos que se actualicen y maldigan a hacienda y no a nosotros por hacerles gastar mas dinero.

Al menos en Windows Server 2012 no va a funcionar con Verifactu y la verificación de CIF/NIF, el motor Schannel no implementa AES-GCM (ni el set moderno de suites ECDHE+GCM), que son los que pide hacienda porque son muy especialitos. Puedes ordenar o quitar/poner cipher suites en el Registro, pero no puedes “instalar” algoritmos que el sistema no trae en la DLL. Por eso, aunque añadas TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, el cliente seguirá sin poder negociarla: Schannel la ignora porque no existe en 2012. Puedes instalar tls.1.2 y comunicar con cualquiera, pero no con hacienda que exige un algoritmo más moderno.

ermendalenda 09-11-2025 12:00:11

Cita:

Empezado por emailesc (Mensaje 569630)
Al menos en Windows Server 2012 no va a funcionar con Verifactu y la verificación de CIF/NIF, el motor Schannel no implementa AES-GCM (ni el set moderno de suites ECDHE+GCM), que son los que pide hacienda porque son muy especialitos. Puedes ordenar o quitar/poner cipher suites en el Registro, pero no puedes “instalar” algoritmos que el sistema no trae en la DLL. Por eso, aunque añadas TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, el cliente seguirá sin poder negociarla: Schannel la ignora porque no existe en 2012. Puedes instalar tls.1.2 y comunicar con cualquiera, pero no con hacienda que exige un algoritmo más moderno.

Con curl.exe y con el curl de php funciona hasta en windows xp, sin tantos requisitos.

ermendalenda 09-11-2025 19:08:55

Ok, acabo de buscar información de por que funciona en curl.exe, por que me habia acojonado:eek:, yo uso una versión de curl de hace unos años, que va en todas las versiones de windows desde XP y en Win32 y Win64 , podeis comprobar si vais a tener problemas, con el curl que teneis, ahora o en el futuro, supongo que si ahora no teneis problemas en el futuro tampoco, no creo que este aceptando conexiones que no sean a partir de de TSLv1.3, como comenta el compañero.
Para verificarlo he hecho lo siguiente, escribir desde la linea de comandos:
curl.exe -V
Me devuelve lo siguiente:
Cita:

curl 7.78.0 (i386-pc-win32) libcurl/7.78.0 OpenSSL/1.1.1k (Schannel) zlib/1.2.11
brotli/1.0.9 zstd/1.5.0 libidn2/2.3.2 libssh2/1.9.0 nghttp2/1.44.0 libgsasl/1.1
0.0
Release-Date: 2021-07-21
para saber si el curl se conecta correctamente a traves de la conexion TSL 1.3 o superior podeis ejecutar lo siguiente:
curl -v https://www2.agenciatributaria.gob.es
y devuelve ésto:
Cita:


* Trying xxxxxx():443...
* Connected to www2.agenciatributaria.gob.es (XXX.XX.XX.XX) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: Path...\curl-ca-bundle.crt
* CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256 (Si os devuelve algo así o superior a TLSV1.3, perfecto)
* ALPN, server did not agree to a protocol (Esto no es nada grave)


¿Por qué funciona ésto desde windows XP, cuando windows xp solo llega a TSLv1.0?


Pues por que curl.exe está compilado con soporte dual: si el Sistema Operativo no tiene el soporte que necesita para la conexión Openssl, de esa compilación curl, toma el control y usa su cifrado, pasando del Sistema operativo. Y oye, funciona perfectamente con AES-GCM y OPENSSL(no Schannel)
Jeje. Lo mejor de los 2 mundos:
XP Viejo con seguridad 2025


BUFF Que alivio

Casimiro Noteví 09-11-2025 19:12:14

^\||/^\||/^\||/

josejava 09-11-2025 19:24:25

Yo lo que he hecho es que un ordenador encendido las 24 horas en mi casa reciba las facturas de las tiendas y desde mi casa las envíe directamente a la AEAT.

Así me quito dolores de cabeza de que si el cliente tiene windows XP o tiene un móvil.

Y si hay algún error me entero antes que nadie.

emailesc 09-11-2025 20:08:18

Cita:

Empezado por ermendalenda (Mensaje 569635)
Ok, acabo de buscar información de por que funciona en curl.exe, por que me habia acojonado:eek:, yo uso una versión de curl de hace unos años, que va en todas las versiones de windows desde XP y en Win32 y Win64 , podeis comprobar si vais a tener problemas, con el curl que teneis, ahora o en el futuro, supongo que si ahora no teneis problemas en el futuro tampoco, no creo que este aceptando conexiones que no sean a partir de de TSLv1.3, como comenta el compañero.
Para verificarlo he hecho lo siguiente, escribir desde la linea de comandos:
curl.exe -V
Me devuelve lo siguiente:


para saber si el curl se conecta correctamente a traves de la conexion TSL 1.3 o superior podeis ejecutar lo siguiente:
curl -v https://www2.agenciatributaria.gob.es
y devuelve ésto:



¿Por qué funciona ésto desde windows XP, cuando windows xp solo llega a TSLv1.0?


Pues por que curl.exe está compilado con soporte dual: si el Sistema Operativo no tiene el soporte que necesita para la conexión Openssl, de esa compilación curl, toma el control y usa su cifrado, pasando del Sistema operativo. Y oye, funciona perfectamente con AES-GCM y OPENSSL(no Schannel)
Jeje. Lo mejor de los 2 mundos:
XP Viejo con seguridad 2025


BUFF Que alivio

Sí, es cierto lo que dices. No obstante creo que esta configuración no accede a los certificados del almacén de certificados del equipo, los tienes que tener como archivo, ¿no?. Si es un equipo tuyo y controlado por ti puede ser una solución, pero para meterselo a un cliente por salvar el windows 7 yo no lo haría.

ermendalenda 09-11-2025 20:10:39

Cita:

Empezado por josejava (Mensaje 569637)
Yo lo que he hecho es que un ordenador encendido las 24 horas en mi casa reciba las facturas de las tiendas y desde mi casa las envíe directamente a la AEAT.

Así me quito dolores de cabeza de que si el cliente tiene windows XP o tiene un móvil.

Y si hay algún error me entero antes que nadie.

Buena idea, pero para disitintos OT, me obliga a tenrr todos los certificados o hacerme colaborador social,.
Tendras u a buena instalacion con SAI, doble conexion de internet con un multplexor o al menos un backup de internet y 2 entradas por si falla una...no? O te la juegas todo a una?
Al menos considera que los datos se suban a un cloud seguro vigilado 24×365 y desee ahi lo rescatas y subes

ermendalenda 21-11-2025 15:47:22

Cita:

Empezado por emailesc (Mensaje 569639)
Sí, es cierto lo que dices. No obstante creo que esta configuración no accede a los certificados del almacén de certificados del equipo, los tienes que tener como archivo, ¿no?. Si es un equipo tuyo y controlado por ti puede ser una solución, pero para meterselo a un cliente por salvar el windows 7 yo no lo haría.

No, curl tiene opciones de obtener y usar los certificados de almacenes, es un poco tiquismiquis pero sabiendolo hacer se puede,

emailesc 21-11-2025 18:52:11

Cita:

Empezado por ermendalenda (Mensaje 570106)
No, curl tiene opciones de obtener y usar los certificados de almacenes, es un poco tiquismiquis pero sabiendolo hacer se puede,

Por lo que yo he visto curl viene con dos compilaciones principales: curl + openssl y curl + schannel.
Curl + openssl no accede a los certificados del equipo, o al menos yo no he visto como hacerlo.
Curl + schannel sí accede a los certificados del equipo, pero no logra la conexión en Windows 7 CON HACIENDA (ojo, con hacienda, si con otros endpoints, y sí en las versiones posteriores de windows). La razón es que Hacienda envía al establecer la conexión un "ServerHello" con suites de cifrado TLS1.2 que Schannel en Windows 7 / 2012 no soporta, ni aunque tú las habilites desde el registro. Y a partir de aquí copy paste:
Cita:

En todas las conexiones a AEAT el servidor de Hacienda obliga a usar:
Ciphers modernos TLS1.2 basados en ECDHE-RSA + AES-GCM + SHA256

Ejemplos:
  • ECDHE-RSA-AES128-GCM-SHA256
  • ECDHE-RSA-AES256-GCM-SHA384
Además, el servidor pide:
  • TLS1.2 como mínimo
  • Intercambio de claves ECDHE moderno
  • Firmas SHA256
  • Curvas P-256 o P-384
¿Por qué Schannel fallaba aunque habilitases TLS1.2 y AES-GCM?


Porque tu Windows Server 2012 tiene estas limitaciones intrínsecas:
a) Implementación antigua de ECDHE en Schannel

→ No soporta las curvas o métodos modernos usados por la AEAT.
b) Matriz de cifrados de AES-GCM incompleta

→ Aunque aparezcan como “habilitados”, Schannel no implementa completamente los suites ECDHE-RSA-AES256-GCM-SHA384 ni ECDHE-RSA-AES128-GCM-SHA256.
c) Schannel NO permite usar --ciphers en curl

→ Las opciones de curl no pueden forzar nada.
Schannel decide por sí mismo la lista de suites aplicables.


Yo lo estuve probando en un windows server 2012 y no fui capaz de hacerlo (aunque quizá otro sí sepa claro). En Windows server 2012 R2 tengo entendido que sí funciona porque ya tiene implementado estos métodos, aunque por ahora no lo he probado. La verdad no se como será en Windows 7, si alguna actualización final los habrá implementado o no.
Por cierto esta limitación no la hay en Ticketbai, son menos exigentes con los cifrados.

ermendalenda 21-11-2025 22:07:32

Cita:

Empezado por emailesc (Mensaje 569639)
Sí, es cierto lo que dices. No obstante creo que esta configuración no accede a los certificados del almacén de certificados del equipo, los tienes que tener como archivo, ¿no?. Si es un equipo tuyo y controlado por ti puede ser una solución, pero para meterselo a un cliente por salvar el windows 7 yo no lo haría.

Sí accede al almacen de window xp, 7( 10, 11 no recuerdo si lo probé pero creo que igual, ya que el certificado es el mismo y se importan igual en todos estas versiones de windows)
Pero tiene su historia, me tuve que romper la cabeza un pelín, pero seguro que la versión chatgpt 0.1 en pre ya lo dice, ;)
Cuando tenga un hueco lo busco, es cierto que fi almente yo lo hago por fichero por que lo controlo y para actualizarlos es mas rapido, existen parametroa de curl para que funcione, hay que tener en cuenta alguna cosita extra pero va bien

emailesc 21-11-2025 22:16:27

Cita:

Empezado por ermendalenda (Mensaje 570118)
Sí accede al almacen de window xp, 7( 10, 11 no recuerdo si lo probé pero creo que igual, ya que el certificado es el mismo y se importan igual en todos estas versiones de windows)
Pero tiene su historia, me tuve que romper la cabeza un pelín, pero seguro que la versión chatgpt 0.1 en pre ya lo dice, ;)
Cuando tenga un hueco lo busco, es cierto que fi almente yo lo hago por fichero por que lo controlo y para actualizarlos es mas rapido, existen parametroa de curl para que funcione, hay que tener en cuenta alguna cosita extra pero va bien

A ver si tu lo consigues: windows 7 o server 2012 (no R2), accediendo al almacén de certificados y conectando con Hacienda, por ejemplo para verificar un NIF, por ejemplo (ojo, que con otros si vas a poder conectar, pero hacienda son más tocapelotas, como no puede ser menos)

ermendalenda 21-11-2025 22:17:30

Por otro lado aqui teneis la traza importante de conexiin curl probados en XP, W7, W10 y W11:
Info: TLSv1.3 (IN),.TLS handshake, Server hello(2) Recv SSL data, 91 bytes (0×5b)
No, es para enseñaros que incluso con xp usa el tlsv1.3, pero funcionaria igual con certificadks de almacen

emailesc 21-11-2025 22:20:10

Cita:

Empezado por ermendalenda (Mensaje 570120)
Por otro lado aqui teneis la traza importante de conexiin curl probados en XP, W7, W10 y W11:
Info: TLSv1.3 (IN),.TLS handshake, Server hello(2) Recv SSL data, 91 bytes (0×5b)

¿con Hacienda? ¿con certificado de almacén de certificados?

ermendalenda 21-11-2025 22:22:22

Cita:

Empezado por emailesc (Mensaje 570119)
A ver si tu lo consigues: windows 7 o server 2012 (no R2), accediendo al almacén de certificados y conectando con Hacienda, por ejemplo para verificar un NIF, por ejemplo (ojo, que con otros si vas a poder conectar, pero hacienda son más tocapelotas, como no puede ser menos)

El truco estaba, si no recuerdo mal, es que habia que indicarle el certificado del almacen con alguna cadena incluida en el mismo que sea unica, y ... que mejor que el NIF del emisor o de reprrsentante que ademas lo puedes parametrizar, con lo cual hay que tener en cuenta que no puedes tener instalado certificados caducados y que sean solo los validos para evitar errores para que no te pille uno malo A ver si lo busco, es que las pruebas las hice rato 2021-2022

emailesc 21-11-2025 22:26:41

Cita:

Empezado por ermendalenda (Mensaje 570122)
El truco estaba, si no recuerdo mal, es que habia que indicarle el certificado del almacen con alguna cadena incluida en el mismo que sea unica, y ... que mejor que el NIF del emisor o de reprrsentante que ademas lo puedes parametrizar, con lo cual hay que tener en cuenta que no puedes tener instalado cerrificados caducados y validos para evitar errores. A ver si lo busco, es que las pruebas las hice rato 2021-2022

Como veas, de todas formas con certificado en archivo funciona correctamente, así que tampoco merece la pena complicarse la vida, que es viernes y son las 22:26. YO me voy a cenar que ya es hora :):):)

daniloversion 22-11-2025 01:38:03

Hay una aplicación que facilita muchísimo toda esta configuración de protocolos y Cyphers. Se llama IIS Crypto por si a alguno le puede ayudar.


Yo he probado ya todas las configuraciones, y nada.. desde una máquina Windows Server 2012 R2 no lo consigo. Nosotros tenemos que usar ahora mismo .net si o si, asi que supongo que tocará migrar el servidor. El fallo se ve facil desde un comando de PowerShell:

Código:

Invoke-WebRequest -Uri URLDelServicioVerifactu
Devuelve:
Código:

Invoke-WebRequest : Anulada la solicitud: No se puede crear un canal seguro SSL/TLS.
En línea: 1 Carácter: 1
+ Invoke-WebRequest -Uri URLDelServicioVerifactu  ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand


ermendalenda 22-11-2025 06:01:36

Cita:

Empezado por daniloversion (Mensaje 570124)
Hay una aplicación que facilita muchísimo toda esta configuración de protocolos y Cyphers. Se llama IIS Crypto por si a alguno le puede ayudar.


Yo he probado ya todas las configuraciones, y nada.. desde una máquina Windows Server 2012 R2 no lo consigo. Nosotros tenemos que usar ahora mismo .net si o si, asi que supongo que tocará migrar el servidor. El fallo se ve facil desde un comando de PowerShell:

Código:

Invoke-WebRequest -Uri URLDelServicioVerifactu
Devuelve:
Código:

Invoke-WebRequest : Anulada la solicitud: No se puede crear un canal seguro SSL/TLS.
En línea: 1 Carácter: 1
+ Invoke-WebRequest -Uri URLDelServicioVerifactu  ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand


Interesante, otro método alternativo a curl para enviar a Verifactu
Quedando algo así, por si alguien quiere imvestigar
Código:

Invoke-WebRequest -Uri "https://www1.agenciatributaria.gob.es/wlpl/VERI_FACTU/registro" -Method POST -ContentType "text/xml;charset=UTF-8" -Certificate (Get-PfxCertificate "C:\certs\certificado.pfx") -Body ([System.Text.Encoding]::UTF8.GetBytes((Get-Content "C:\verifactu\soap.xml" -Raw)))

ermendalenda 22-11-2025 06:41:54

Ponngo ejemplo, sin haberlo probado, con endpoint de entorno de pruebas por ai alguien quiere probar
Código PHP:

powershell -Command "Invoke-WebRequest -Uri 'https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VeriFactuSOAP' -Method POST -ContentType 'text/xml;charset=UTF-8' -Certificate (Get-PfxCertificate 'C:\certs\certificado.pfx') -Body ([System.Text.Encoding]::UTF8.GetBytes((Get-Content 'C:\verifactu\soap.xml' -Raw))) | Out-File "C:\verifactu\respuesta.xml

Gracias por el aporte de invoke-...

ermendalenda 22-11-2025 08:41:34

Cita:

Empezado por emailesc (Mensaje 570123)
Como veas, de todas formas con certificado en archivo funciona correctamente, así que tampoco merece la pena complicarse la vida, que es viernes y son las 22:26. YO me voy a cenar que ya es hora :):):)

Ya he repasado los apuntes de 2022
Efectivamente no es posible usar directamente certificados, pero desde w7 si lo puedes automatizar, con ceutil extraes el certificado del almacen (indicandole la huella del certificado) y despues lo usas con curl.
Lo que si se podia usar directamente es con autofirmacommandline.exe, pudiendo apuntar directamente al certificado que quieres sin que te muestre la pantalla de selección.
El autofirmacommandline.exe no es recomendable para firmar cuando son ventas rapidas (comercio retail) por que puede tardar unos cuantos segundos en ocasiones.

emailesc 22-11-2025 09:36:38

Cita:

Empezado por daniloversion (Mensaje 570124)
Hay una aplicación que facilita muchísimo toda esta configuración de protocolos y Cyphers. Se llama IIS Crypto por si a alguno le puede ayudar.


Yo he probado ya todas las configuraciones, y nada.. desde una máquina Windows Server 2012 R2 no lo consigo. Nosotros tenemos que usar ahora mismo .net si o si, asi que supongo que tocará migrar el servidor. El fallo se ve facil desde un comando de PowerShell:

Código:

Invoke-WebRequest -Uri URLDelServicioVerifactu
Devuelve:
Código:

Invoke-WebRequest : Anulada la solicitud: No se puede crear un canal seguro SSL/TLS.
En línea: 1 Carácter: 1
+ Invoke-WebRequest -Uri URLDelServicioVerifactu  ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
 + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand



Desde Windows Server 2012 R2 tenía entendido que sí funcionaba, pero no lo he probado aun. No obstante, puedes salvarte de cambiar el servidor, o al menos no tener que hacerlo deprisa y corriendo, puedes enviar desde .NET con curl + openssl, la compilación que lleva ambas, y el certificado en archivo, no en el almacén de certificados de windows. Curl + Openssl usan sus propias librerías, no las de Schannell y funciona bien.


La franja horaria es GMT +2. Ahora son las 22:25:43.

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