Uso de Axe DevTools Linter con un Proxy Inverso

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard

Cómo usar NGINX como proxy inverso para cifrar conexiones a su instancia local de Axe DevTools Linter

Free Trial
Not for use with personal data

Puede cifrar sus conexiones a su instancia local de Axe DevTools Linter (y prevenir el espionaje de intermediarios) utilizando un servidor proxy inverso como NGINX. Esta guía le muestra cómo hacerlo.

Requisitos

note

Esta guía asume que instalará en una máquina con Linux.

Necesitará el siguiente software:

  • Binario de Axe DevTools Linter local
  • NGINX
  • OpenSSL (para crear certificados autofirmados)

Para obtener ayuda con la instalación de NGINX, vea Instalar | NGINX.

Para más información sobre la instalación del servidor local de Axe DevTools Linter, consulte Configuración del Servidor Local.

Necesitará OpenSSL para crear certificados autofirmados. Para más información sobre OpenSSL, consulte OpenSSL.

Configuración de NGINX

Puede crear un archivo de configuración y colocarlo en el directorio /etc/nginx/config.d . Para este ejemplo, cree un archivo de configuración llamado axe-linter.conf y colóquelo en el directorio /etc/nginx/config.d . La configuración a continuación es un ejemplo de cómo configurar NGINX como proxy inverso:

  server {
    listen      443 ssl;
    listen [::]:443 ssl;

    # Configure SSL.
    # Replace `/opt/deque/cert/axe.crt` and `/opt/deque/cert/axe.key` 
    # with your own key files.

    ssl_certificate     /opt/deque/axe/certs/axe.crt;
    ssl_certificate_key /opt/deque/axe/certs/axe.key;

    server_name _;

    # Redirect all requests to Axe DevTools Linter
    location / {
      proxy_pass         http://127.0.0.1:3000;
      proxy_http_version 1.1;
      proxy_cache_bypass $http_upgrade;

      proxy_set_header Upgrade    $http_upgrade;
      proxy_set_header connection 'upgrade';
      proxy_set_header Host       $host;
      proxy_set_header X-Real-IP  $remote_addr;
    }
  }

Necesitará dos archivos de certificado SSL como lo indican las opciones ssl_certificate y ssl_certificate_key en la configuración anterior.

En el ejemplo anterior, las solicitudes a este servidor NGINX se redirigen a un servidor Axe DevTools Linter en localhost (127.0.0.1) en el puerto 3000.

Después de cambiar la configuración, reinicie NGINX como se muestra a continuación:

sudo service nginx restart

Configuración de DNS

Se requiere un certificado SSL en su servidor ahora que está usando conexiones cifradas. Si el servidor tiene un nombre registrado en DNS (como un registro A de DNS, por ejemplo), puede usar un servicio como Let's Encrypt para generar certificados gratuitos. Si desea acceder a su servidor solo a través de su dirección IP, necesitará crear un certificado autofirmado porque un servicio como Let's Encrypt no emite certificados para direcciones IP; requieren que el servidor esté registrado con un servidor DNS.

Uso de un Certificado Autofirmado

Para servidores a los que se accede solo a través de su dirección IP, el primer paso es crear los certificados autofirmados con OpenSSL como se muestra a continuación:

openssl req -newkey rsa:2048 -x509 -nodes -keyout /etc/ssl/private/axe-selfsigned.key -new -out /etc/ssl/certs/axe-selfsigned.crt -subj /CN=axe-linter-server -reqexts SAN -extensions SAN -config <(cat /etc/ssl/openssl.cnf <(printf '[SAN]\nsubjectAltName=IP:10.10.1.50')) -sha256 -days 365

En el comando anterior, necesita cambiar la dirección IP por la dirección IP de su servidor (en el ejemplo está configurada a 10.10.1.50), y deberá cambiar las rutas de los certificados en su archivo de configuración en /etc/nginx/config.d para apuntar a /etc/ssl/private/axe-selfsigned.key y /etc/ssl/certs/axe-selfsigned.crt.

El certificado creado es válido solo por un año (la opción -days 365 ), pero puede cambiarlo a una duración más larga.

Uso del Conector Axe DevTools Linter con Certificados Autofirmados

Necesitarás copiar el certificado a la máquina cliente (en este ejemplo, el archivo axe-selfsigned.crt ) para que tu código cliente o el Conector de Axe DevTools Linter puedan usar el certificado.

Luego necesitarás configurar las variables de entorno como se discutió en Configuración de Variables de Entorno

El siguiente ejemplo muestra cómo usar el Conector de Axe DevTools Linter con tu certificado autofirmado:

NODE_EXTRA_CA_CERTS=/path/to/downloaded/axe-selfsigned.crt axe-linter-connector -s . -d .

La variable de entorno NODE_EXTRA_CA_CERTS le indica a node y, por tanto, al Conector de Axe DevTools Linter que acepte el certificado autofirmado especificado, que normalmente sería rechazado, como se muestra a continuación:

axe-linter-connector -s . -d .   
Error: self signed certificate
    at TLSSocket.onConnectSecure (_tls_wrap.js:1502:34)
    at TLSSocket.emit (events.js:314:20)
    at TLSSocket._finishInit (_tls_wrap.js:937:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:711:12)

Configuración de Variables de Entorno

Para usar el Conector de Axe DevTools Linter con un servidor proxy inverso, necesitas cambiar ambas variables de entorno:

  • AXE_LINTER_SERVER_URL
  • AXE_LINTER_SERVER_PORT

Por ejemplo, puedes configurar las variables como se muestra a continuación:

export AXE_LINTER_SERVER_URL=https://10.10.1.50
export AXE_LINTER_SERVER_PORT=443

El URL debe comenzar con https y el puerto debe ser 443, de lo contrario no podrás conectarte a tu servidor.

Bloqueo del Puerto Sin Cifrar en Tu Firewall

Podrías considerar bloquear el puerto asignado a tu servidor de Axe DevTools Linter (aquí, el puerto 3000) del tráfico externo para asegurarte de que todas las conexiones pasen a través del servidor proxy.