È possibile crittografare le connessioni all'istanza locale di axe DevTools Linter (e impedire lo snooping man-in-the-middle) utilizzando un server proxy inverso come NGINX. Questa guida ti mostra come fare.
Requisiti
Questa guida presuppone che l'installazione venga eseguita su una macchina Linux.
Avrai bisogno del seguente software:
- Binario on-premises axe DevTools Linter
- NGINX
- OpenSSL (per la creazione di certificati autofirmati)
Per assistenza nell'installazione di NGINX, vedere Installa | NGINX.
Per ulteriori informazioni sull'installazione del server axe DevTools Linter in locale, vedere Configurazione del server in locale.
Per creare certificati autofirmati è necessario OpenSSL. Per ulteriori informazioni su OpenSSL, vedere OpenSSL.
Configurazione di NGINX
È possibile creare un file di configurazione e posizionarlo nella directory /etc/nginx/config.d . Per questo esempio, creare un file di configurazione denominato axe-linter.conf e posizionarlo nella directory /etc/nginx/config.d . La configurazione seguente è un esempio di come configurare NGINX come 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;
}
}
Avrete bisogno di due file di certificato SSL come indicato dalle opzioni ssl_certificate e ssl_certificate_key nella configurazione sopra.
Nell'esempio precedente, le richieste a questo server NGINX vengono inoltrate a un server axe DevTools Linter su localhost (127.0.0.1) sulla porta 3000.
Dopo aver modificato la configurazione, riavviare NGINX come mostrato di seguito:
sudo service nginx restart
Configurando DNS
Ora che utilizzi connessioni crittografate, sul tuo server è richiesto un certificato SSL. Se il server ha un nome registrato nel DNS (ad esempio come record DNS A), è possibile utilizzare un servizio come Let's Encrypt per generare certificati gratuiti. Se vuoi accedere al tuo server solo tramite il suo indirizzo IP, devi creare un certificato autofirmato, perché un servizio come Let's Encrypt non rilascia certificati per gli indirizzi IP, ma richiede che il server sia registrato su un server DNS.
Utilizzo di un certificato autofirmato
Per i server a cui si accede solo tramite il loro indirizzo IP, il primo passo è creare i certificati autofirmati con OpenSSL come mostrato di seguito:
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
Nel comando precedente, devi modificare l'indirizzo IP con l'indirizzo IP del tuo server (nell'esempio è impostato su 10.10.1.50) e dovrai modificare i percorsi del certificato nel tuo file di configurazione in /etc/nginx/config.d in modo che puntino a /etc/ssl/private/axe-selfsigned.key e /etc/ssl/certs/axe-selfsigned.crt.
Il certificato creato è valido solo per un anno (opzione -days 365 ), ma è possibile modificarne la validità per un periodo più lungo.
Uso di axe DevTools Linter Connector con certificati autofirmati
Sarà necessario copiare il certificato sul computer client (in questo esempio, il file axe-selfsigned.crt) in modo che il codice client o axe DevTools Linter Connector possano utilizzare il certificato.
Quindi sarà necessario configurare le variabili di ambiente come discusso in Impostazione delle variabili di ambiente
L'esempio seguente mostra come utilizzare axe DevTools Linter Connecter con un certificato autofirmato:
NODE_EXTRA_CA_CERTS=/path/to/downloaded/axe-selfsigned.crt axe-linter-connector -s . -d .
La variabile d'ambiente NODE_EXTRA_CA_CERTS indica a node e quindi ad axe DevTools Linter Connector di accettare il certificato autofirmato specificato, che normalmente verrebbe rifiutato, come mostrato di seguito:
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)
Impostazione delle variabili ambientali
Per utilizzare axe DevTools Linter Connector con un server proxy inverso, è necessario modificare entrambe le sue variabili di ambiente:
- AXE_LINTER_SERVER_URL
- AXE_LINTER_SERVER_PORT
Ad esempio, è possibile impostare le variabili come mostrato di seguito:
export AXE_LINTER_SERVER_URL=https://10.10.1.50
export AXE_LINTER_SERVER_PORT=443
L'URL deve iniziare con https e la porta deve essere 443, altrimenti non sarà possibile connetterti al tuo server.
Blocco della porta non cifrata nel firewall
Potresti prendere in considerazione l'idea di bloccare la porta assegnata al tuo server axe DevTools Linter (in questo caso, la porta 3000) dal traffico esterno, in modo da essere sicuro che tutte le connessioni passino attraverso il server proxy.