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:
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 -k **
Si Controlar_server = True
Entonces
curl --cacert [pathmicertificadocurl]\bundle.pem --no-keepalive --speed-time 10 --speed-limit 1 --connect-timeout 40 -m 40 -S -L -d "@[path_soap]\misoap.xml" -o "[path_respuesta]/respuesta.xml" --cert-type P12 --cert [pat_certificado]\certificado.pfx:[Contraseña] https://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 -k -S -L -d "@[path_soap]\misoap.xml" -o "[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