Uso de Axe DevTools Linter con un Proxy Inverso
Cómo usar NGINX como proxy inverso para cifrar conexiones a su instancia local de Axe DevTools Linter
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
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 365En 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=443El 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.
