Utilizzo di Axe DevTools Linter con un Reverse Proxy

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

Come usare NGINX come reverse proxy per cifrare le connessioni alla tua istanza locale di Axe DevTools Linter

Free Trial
Not for use with personal data

Puoi cifrare le tue connessioni alla tua istanza locale di Axe DevTools Linter (e prevenire l'intercettazione da parte di terzi) utilizzando un server proxy inverso come NGINX. Questa guida ti mostra come fare.

Requisiti

note

Questa guida presuppone che tu stia installando su una macchina Linux.

Avrai bisogno del seguente software:

  • Binario locale di Axe DevTools Linter
  • NGINX
  • OpenSSL (per creare certificati autofirmati)

Per assistenza nell'installazione di NGINX, vedi Installa | NGINX.

Per ulteriori informazioni sull'installazione del server locale Axe DevTools Linter, vedi Configurazione del Server Locale.

Avrai bisogno di OpenSSL per creare certificati autofirmati. Per ulteriori informazioni su OpenSSL, vedi OpenSSL.

Configurazione di NGINX

Puoi creare un file di configurazione e posizionarlo nella directory /etc/nginx/config.d . In questo esempio, crea un file di configurazione chiamato axe-linter.conf e posizionalo nella directory /etc/nginx/config.d . La configurazione seguente è un esempio di come configurare NGINX come reverse proxy:

  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;
    }
  }

Avrai bisogno di due file di certificato SSL come indicato dalle opzioni ssl_certificate e ssl_certificate_key nella configurazione sopra.

Nell'esempio sopra, le richieste a questo server NGINX vengono inoltrate a un server Axe DevTools Linter su localhost (127.0.0.1) alla porta 3000.

Dopo aver modificato la configurazione, riavvia NGINX come mostrato di seguito:

sudo service nginx restart

Configurazione del DNS

Un certificato SSL è richiesto sul tuo server ora che stai utilizzando connessioni cifrate. Se il server ha un nome registrato nel DNS (ad esempio come record A DNS), puoi utilizzare un servizio come Let's Encrypt per generare certificati gratuiti. Se desideri accedere al tuo server solo tramite il suo indirizzo IP, devi creare un certificato autofirmato perché un servizio come Let's Encrypt non emetterà certificati per indirizzi IP: richiede che il server sia registrato con un server DNS.

Utilizzo di un Certificato Autofirmato

Per i server accessibili solo tramite il loro indirizzo IP, il primo passaggio è 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 sopra, devi cambiare l'indirizzo IP con l'indirizzo IP del tuo server (nell'esempio è impostato su 10.10.1.50), e dovrai cambiare i percorsi dei certificati nel tuo file di configurazione in /etc/nginx/config.d per puntare a /etc/ssl/private/axe-selfsigned.key e /etc/ssl/certs/axe-selfsigned.crt.

Il certificato creato è valido solo per un anno (l'opzione -days 365 ), ma puoi cambiarlo per una durata più lunga.

Utilizzo del Connettore Axe DevTools Linter con Certificati Autofirmati

Dovrai copiare il certificato sulla macchina client (in questo esempio, il axe-selfsigned.crt file) affinché il tuo codice client o Axe DevTools Linter Connector possa utilizzare il certificato.

Quindi dovrai configurare le variabili d'ambiente come discusso in Configurazione delle variabili d'ambiente

Il seguente esempio mostra come utilizzare Axe DevTools Linter Connector con il tuo 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 a 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)

Configurazione delle variabili d'ambiente

Per utilizzare Axe DevTools Linter Connector con un server proxy inverso, è necessario modificare entrambe le sue variabili d'ambiente:

  • AXE_LINTER_SERVER_URL
  • AXE_LINTER_SERVER_PORT

Ad esempio, puoi 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 potrai connetterti al tuo server.

Blocco della porta non crittografata nel tuo firewall

Potresti considerare di bloccare la porta assegnata al tuo server Axe DevTools Linter (qui, porta 3000) dal traffico esterno, in modo da assicurarti che tutte le connessioni passino attraverso il server proxy.