Les explicamos el protocolo de comunicaciones utilizado con la AEAT que sería similar con el resto de organismos.
En la negociación verificamos, a través de los certificados de servidor, que el interlocutor es el apropiado. Si tienen un proxy y firewall muy intrusivos seguramente les fallará la comunicación debido a que no confiamos en su certificado y no le daremos ningún dato salvo que pongan reglas de conexión no supervisada, directa, con la AEAT.
Se utiliza HTTPS, tal y como está especificado en este documento de la AEAT:
Página 30:
El cifrado es TLS 1.2, el único soportado desde el 11/12/2024 por la AEAT. Si se intenta con otro la AEAT no permitiría la comunicación.
Aunque la AEAT soporta TLS 1.3, no está activado por compatibilidad.
En el programa se puede activar la trazabilidad de las comunicaciones y nos saldría un log parecido a este:
SSL: Resolving hostname prewww1.aeat.es.
SSL: Connecting to 195.77.198.76.
SSL: SSL status: "before/connect initialization"
SSL: SSL status: "before/connect initialization"
SSL: SSL status: "SSLv2/v3 write client hello A"
SSL: SSL status: "SSLv3 read server hello A"
VCP: /C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2009 Entrust, Inc. - for authorized use only/CN=Entrust Root Certification Authority - G2
VCP: /C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
VCP: 0E:E9:4C:C3:00:00:00:00:51:D3:77:85
VCP: 35:94:F5:3C:2A:77:54:47:EB:95:67:4B:FF:6C:F2:8B
VCP: /C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
VCP: /C=ES/L=Madrid/O=Agencia Estatal de Administraci\xC3\xB3n Tributaria/CN=*.aeat.es
VCP: AE:D6:1F:19:8E:06:51:F4:DE:E4:46:0C:8C:FE:4B:29
VCP: 7C:86:14:99:A9:9B:85:10:99:3C:C2:21:15:56:72:9D
SSL: SSL status: "SSLv3 read server certificate A"
SSL: SSL status: "SSLv3 read server key exchange A"
SSL: SSL status: "SSLv3 read server certificate request A"
SSL: SSL status: "SSLv3 read server done A"
SSL: SSL status: "SSLv3 write client certificate A"
SSL: SSL status: "SSLv3 write client key exchange A"
SSL: SSL status: "SSLv3 write certificate verify A"
SSL: SSL status: "SSLv3 write change cipher spec A"
SSL: SSL status: "SSLv3 write finished A"
SSL: SSL status: "SSLv3 flush data"
SSL: SSL status: "SSLv3 read finished A"
SSL: SSL status: "SSL negotiation finished successfully"
SSL: SSL status: "SSL negotiation finished successfully"
SSL: Cipher: name = ECDHE-RSA-AES128-GCM-SHA256; description = ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
; bits = 128; version = TLSv1/SSLv3;
HTTPS: 200: HTTP/1.0 200 OK
La línea fundamental es esta:
SSL: Cipher: name = ECDHE-RSA-AES128-GCM-SHA256; description = ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
; bits = 128; version = TLSv1/SSLv3;
Si preguntan a ChatGpt o similar les responderá que es un cifrado seguro.