Uso de axe DevTools Linter con un proxy inverso

Link to Uso de axe DevTools Linter con un proxy inverso copied to clipboard
Free Trial
Not for use with personal data

Puede cifrar sus conexiones a su instancia local de axe DevTools Linter (y evitar el espionaje del tipo «man-in-the-middle») mediante un servidor proxy inverso como NGINX. Esta guía le muestra cómo hacerlo.

Requisitos

note

Esta guía asume que vas a realizar la instalación en una máquina Linux.

Necesitarás el siguiente software:

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

Para obtener ayuda para instalar NGINX, consulte Instalar | NGINX.

Para obtener 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 obtener 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 siguiente configuració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 se indica en las opciones ssl_certificate y ssl_certificate_key en la configuración anterior.

En el ejemplo anterior, las solicitudes a este servidor NGINX se reenvían a un servidor 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

Configurando DNS

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

Uso de un certificado autofirmado

Para los servidores a los que se accede únicamente 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, debe cambiar la dirección IP a la dirección IP de su servidor (en el ejemplo está configurada en 10.10.1.50), y deberá cambiar las rutas del certificado en su archivo de configuración en /etc/nginx/config.d para que apunten 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 -días 365 ), pero puede cambiarlo a una duración mayor.

Uso del conector axe DevTools Linter con certificados autofirmados

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

Luego necesitarás configurar las variables de entorno como se explica en Configuración de variables de entorno

El siguiente ejemplo muestra cómo utilizar el Conector de axe DevTools Linter con un certificado firmado por usted mismo:

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 al Nodo y, por lo 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 utilizar el Conector de axe DevTools Linter con un servidor proxy inverso, debe cambiar ambas variables de entorno:

  • AXE_LINTER_SERVER_URL
  • AXE_LINTER_SERVER_PORT

Por ejemplo, puede 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

La URL debe comenzar con https y el puerto debe ser 443, de lo contrario no podrá conectarse a su servidor.

Bloqueando el puerto no cifrado en su firewall

Es posible que desees considerar bloquear el puerto asignado a tu servidor axe DevTools Linter (aquí, el puerto 3000) del tráfico externo para que puedas estar seguro de que todas las conexiones pasan por el servidor proxy.