Ver Mensaje Individual
  #8  
Antiguo 30-11-2025
ermendalenda ermendalenda is offline
Miembro
 
Registrado: ago 2021
Posts: 2.761
Reputación: 7
ermendalenda Va por buen camino
Post

Ya por fin lo tengo claro y curl funcionando 100% sin bloqueos.

Que ocurre con curl -k
Que a veces (poquisimas veces peroocurre) los servidores de la AEAT detectan actividades raras que realiza el curl con -k y banea la conexión, esa conexión no salta ni con los timeouts, por que queda en una especie de "limbo", aunque podeis hacer que salte añadiendo el parametro --no-keepalive y así no se mantiene viva esos 5 minutos.
El problema es que llegue un día que esas conexiones no entren nunca y estaba preocupado de que un día me pille en "Cincinati" y empiece a recibir errores de todo tipo, y tampoco quiero dejar de aprovechar esta caracteristica, PEROO, también puede pasar que los CA de LA AEAT+ ROOT + INTERMEDIOS que tiene curl en su bundle, para conectarse a la AEAT, caduquen, por lo que he visto, tendrian que caducar todos, ya que he probado a dejar cada uno de ellos solos en el bundle y funcionaría bien la conexión, no siendo así si están todos caducados, pero con -k se saltaria esa restricción.
Entonces, por que no asegurarselo todo?

Os dejo lo que he hecho por si os viene bien:
Cita:
Crear un bundle.pem con un editor wordpad, notepad, notepad++, o lo que tengais a mano
Pegar el contenido de los ".crt" descargados de la aeat,
actualmente aqui:
https://sede.agenciatributaria.gob.e...ributaria.html
y añadis el de Sectigo que es el propio del servidor de la Aeat
http://www.tbs-x509.com/USERTrustRSA...nAuthority.crt

Tambien os lo podeis exportar desde el navegador:
1.entrar en httpw://www1.agenciatributaria.gob.es
2. Pinchar candado certificado
3. View certificate
4. Pestaña detalles
Exportar
Sectigo es el que usa actualmente por que es el que ha contratado, y también lo usa en las conexiones si los Intermedios y CARoot están caducados, aunque puede cambiar de proveedor cuando caduque el año que viene y que en vez de Sectigo sea "Pepito", por eso a los que usan curl les conviene tenerlo actualizado el bundle, yo no me fiaria mucho de dejarle a windows que se actualizacen solos.

Código PHP:
Declarar variable Controlar_server como booleana
Funcion Inicio Programa
     Variable Controlar_Server
=True
Fin Funcion

Timer_envio
()
LLamar a enviar()



Fin Timer

Funcion Enviar
()
**
Si Controlar_Server=True Entonces Enviar sin -k Si no Enviar con -**

Si Controlar_server True
Entonces
curl 
--cacert [pathmicertificadocurl]\bundle.pem --no-keepalive --speed-time 10 --speed-limit 1 --connect-timeout 40 -m 40 ---"@[path_soap]\misoap.xml" -"[path_respuesta]/respuesta.xml"  --cert-type P12 --cert [pat_certificado]\certificado.pfx:[Contraseñahttps://xxxxxx.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP 
Si no (con -k sin verificar pem)
curl --no-keepalive  --speed-time 10 --speed-limit 1 --connect-timeout 40 -m 40 ----d  "@[path_soap]\misoap.xml" -"[path_respuesta]/respuesta.xml"   --cert-type P12 --cert [pat_certificado]\certificado.pfx:[Contraseña]  https://xxxxxx.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP

Si respuesta=Error y Controlar_Server=True y No Devuelve xml de respuesta ni de confirmacion ni de errores
Entonces Controlar_server
=false
Si no
Controlar_server
=True  (En cualquier caso de que estuviera en false haya sido correcta la conexion o no)
                      
Fin Enviar 
De esta forma me aseguro un camino u otro, y tengo más margen de tranquilidad.

Saludos

Última edición por ermendalenda fecha: 30-11-2025 a las 08:54:40.
Responder Con Cita