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
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.