Configuración de Proxy para Consultas al SII

Introducción al Proxy

Un proxy es un servidor intermediario que actúa como puente entre tu aplicación y los servicios externos. En el contexto de API Gateway, utilizamos proxies para distribuir las consultas al SII (Servicio de Impuestos Internos) desde diferentes direcciones IP, evitando así restricciones y limitaciones de uso.

¿Por qué necesitamos un proxy?

API Gateway es la plataforma líder en Chile que ofrece servicios web que el SII no proporciona directamente. Debido al alto volumen de consultas que procesamos, el SII puede implementar límites de uso basados en direcciones IP para controlar el acceso a sus servicios.

Cuando el SII restringe o limita las consultas desde una IP específica, esto puede afectar a múltiples usuarios. Un proxy resuelve este problema permitiendo que las consultas se realicen desde direcciones IP alternativas, distribuyendo la carga y minimizando el impacto de las restricciones.

Beneficios del uso de proxy:

  • Aislamiento de restricciones: Si una IP es limitada, solo afecta a los usuarios de ese proxy específico.
  • Mayor disponibilidad: Si la IP principal está restringida, los proxies permiten continuar operando.
  • Distribución de carga: Reduce la presión sobre una sola dirección IP.

Funcionamiento del Proxy

Un proxy funciona como un intermediario inteligente en la comunicación entre aplicaciones:

  1. Cliente → API Gateway: El cliente envía la consulta a API Gateway.
  2. API Gateway → Proxy: API Gateway envía la consulta al proxy.
  3. Proxy → SII: El proxy reenvía la consulta al SII.
  4. SII → Proxy: El SII responde al proxy.
  5. Proxy → API Gateway: El proxy entrega la respuesta a API Gateway.
  6. API Gateway → Cliente: API Gateway entrega la respuesta al cliente.

El proxy debe estar ubicado en una red pública accesible desde API Gateway. En este tutorial utilizaremos Squid, un proxy HTTP/HTTPS robusto y ampliamente utilizado, pero puedes implementar cualquier solución compatible.

Opciones de despliegue:

  • Servidores propios: Infraestructura on-premise.
  • Servicios en la nube: Google Cloud Platform (tiene región en Chile), AWS, Azure, etc.
  • Proveedores locales: Otros servicios con presencia en Santiago de Chile.

Configuración de Squid con Docker

Utilizaremos Docker para simplificar la implementación del proxy Squid. Crea un directorio para tu proyecto y sigue estos pasos:

1. Archivo Docker Compose

Crea un archivo docker-compose.yml con la siguiente configuración:

services:
  squid:
    image: ubuntu/squid:latest
    container_name: squid
    restart: unless-stopped
    volumes:
      - "./squid.conf:/etc/squid/squid.conf:ro"
      - "./passwords:/etc/squid/passwords:ro"
    ports:
      - "3128:3128"

Nota importante: El puerto 3128 es el puerto estándar de Squid. Si necesitas usar un puerto diferente, asegúrate de modificarlo tanto en el docker-compose.yml como en el archivo de configuración squid.conf. Este puerto debe ser accesible desde Internet o al menos desde los servidores de API Gateway.

2. Configuración de Squid

Crea el archivo squid.conf en el mismo directorio:

# Configuración de autenticación.
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm Proxy

# Definir ACL para usuarios autenticados.
acl authenticated proxy_auth REQUIRED

# Definir ACL para dominios del SII (recomendado para seguridad).
acl sii_domains dstdomain .sii.cl

# Permitir acceso solo a usuarios autenticados y solo a dominios del SII.
http_access allow authenticated sii_domains

# Denegar todas las demás solicitudes.
http_access deny all

# Escuchar en el puerto 3128.
http_port 3128

Nota de seguridad: La configuración anterior incluye una restricción que limita el uso del proxy únicamente a dominios del SII (.sii.cl). Esto es altamente recomendado para evitar el uso no autorizado del proxy para otros fines. Si necesitas acceder a otros dominios a través del proxy, puedes modificar o eliminar la línea acl sii_domains dstdomain .sii.cl y cambiar http_access allow authenticated sii_domains por http_access allow authenticated.

3. Creación de Credenciales

Genera el archivo de contraseñas usando el comando htpasswd:

htpasswd -c passwords <nombre_usuario> <contraseña>

Ejemplo:

htpasswd -c passwords admin mi_contraseña_segura

Recomendaciones de seguridad:

  • Usa contraseñas fuertes (mínimo 12 caracteres).
  • Combina mayúsculas, minúsculas, números y símbolos.
  • Evita información personal en las credenciales.

4. Iniciar el Servicio

Ejecuta el siguiente comando para iniciar el proxy:

docker compose up -d

Verifica que el servicio esté funcionando correctamente:

docker compose ps

Configuración en API Gateway

Una vez que tu proxy esté funcionando, necesitas configurarlo en API Gateway:

1. Acceder a la Configuración

Ve a la configuración de tu perfil en API Gateway.

2. Configurar la URL del Proxy

En el campo Proxy URL, ingresa la siguiente información:

http://<nombre_usuario>:<contraseña>@<ip_proxy>:3128

Ejemplo:

http://admin:mi_contraseña_segura@example.com:3128

Parámetros:

  • <nombre_usuario>: El usuario que creaste con htpasswd.
  • <contraseña>: La contraseña correspondiente.
  • <ip_proxy>: La dirección IP pública de tu servidor proxy.
  • 3128: El puerto de Squid (cambia si usaste uno diferente).

3. Verificar la Configuración

Después de guardar la configuración, API Gateway comenzará a utilizar tu proxy para todas las consultas al SII. Esto significa que las consultas se realizarán desde la IP de tu proxy en lugar de la IP principal de API Gateway.

Para verificar que la configuración es correcta, realiza una consulta a la API y revisa la cabecera X-Stats-HttpClientProxy en la respuesta. Si su valor es 1, significa que el proxy está siendo utilizado. Si el valor es 0, el proxy no se está usando; en ese caso, revisa la sección de problemas comunes más abajo.

Solución de Problemas

Problemas Comunes

1. Error de autenticación

  • Verifica que las credenciales en API Gateway coincidan con las del archivo passwords.
  • Confirma que el archivo passwords esté correctamente montado en el contenedor.

2. Proxy no accesible

  • Verifica que el puerto 3128 esté abierto en el firewall.
  • Confirma que la IP del proxy sea accesible desde Internet.
  • Revisa los logs de Docker: docker compose logs squid.

3. Consultas lentas

  • Monitorea el uso de recursos del servidor proxy.
  • Considera aumentar los recursos asignados al contenedor.
  • Verifica la latencia de red entre API Gateway y tu proxy.

Comandos Útiles

# Reiniciar el proxy.
docker compose restart squid

# Ver logs en tiempo real.
docker compose logs -f squid

# Verificar estado del contenedor.
docker compose ps

# Acceder al contenedor para debugging.
docker compose exec squid bash

Con esta configuración, API Gateway utilizará tu proxy para todas las consultas al SII, distribuyendo la carga y reduciendo significativamente el riesgo de restricciones por IP. Esto garantiza un servicio más estable y confiable.

On this page

Last updated on 22/08/2025 by Anonymous