Using axe DevTools Linter with a Reverse Proxy

Link to Using axe DevTools Linter with a Reverse Proxy copied to clipboard
Free Trial
Not for use with personal data

You can encrypt your connections to your on-premises axe DevTools Linter instance (and prevent man-in-the-middle snooping) by using a reverse proxy server such as NGINX. This guide shows you how.

Requirements

note

This guide assumes you'll be installing on a Linux machine.

You will need the following software:

  • On-premises axe DevTools Linter binary
  • NGINX
  • OpenSSL (for creating self-signed certificates)

Hilfe zur Installation von NGINX finden Sie unter Installieren | NGINX.

Weitere Informationen zur Installation des lokalen axe DevTools Linter-Servers finden Sie unter Einrichten des lokalen Servers.

Sie benötigen OpenSSL, um selbstsignierte Zertifikate zu erstellen. Weitere Informationen zu OpenSSL finden Sie unter OpenSSL.

Konfigurieren von NGINX

Sie können eine Konfigurationsdatei erstellen und sie im Verzeichnis /etc/nginx/config.d ablegen. Erstellen Sie für dieses Beispiel eine Konfigurationsdatei mit dem Namen axe-linter.conf und platzieren Sie sie im Verzeichnis /etc/nginx/config.d . Die folgende Konfiguration ist ein Beispiel für die Konfiguration von NGINX als 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;
    }
  }

Sie benötigen zwei SSL-Zertifikatsdateien, wie durch die Optionen ssl_certificate und ssl_certificate_key in der obigen Konfiguration angegeben.

Im obigen Beispiel werden Anfragen an diesen NGINX-Server an einen axe DevTools Linter-Server auf localhost (127.0.0.1) an Port 3000 weitergeleitet.

Starten Sie NGINX nach der Änderung der Konfiguration wie unten gezeigt neu.

sudo service nginx restart

DNS konfigurieren

Da Sie nun verschlüsselte Verbindungen verwenden, ist auf Ihrem Server ein SSL-Zertifikat erforderlich. Wenn der Server einen im DNS registrierten Namen hat (beispielsweise als DNS-A-Eintrag), können Sie mit einem Dienst wie Let’s Encrypt kostenlose Zertifikate generieren. Wenn Sie auf Ihren Server nur über dessen IP-Adresse zugreifen möchten, müssen Sie ein selbstsigniertes Zertifikat erstellen, da ein Dienst wie Let’s Encrypt keine Zertifikate für IP-Adressen ausstellt. Dafür muss der Server bei einem DNS-Server registriert sein.

Verwenden eines selbstsignierten Zertifikats

Bei Servern, auf die nur über ihre IP-Adresse zugegriffen wird, besteht der erste Schritt darin, die selbstsignierten Zertifikate mit OpenSSL wie unten gezeigt zu erstellen:

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

Im obigen Befehl müssen Sie die IP-Adresse durch die IP-Adresse Ihres Servers ersetzen (im Beispiel ist sie auf 10.10.1.50 festgelegt) und Sie müssen die Zertifikatspfade in Ihrer Konfigurationsdatei in /etc/nginx/config.d ändern, damit sie auf /etc/ssl/private/axe-selfsigned.key und /etc/ssl/certs/axe-selfsigned.crt verweisen.

Das erstellte Zertifikat ist nur ein Jahr gültig (die Option -days 365 ), Sie können die Gültigkeitsdauer jedoch ändern.

Verwenden des axe DevTools Linter Connector mit selbstsignierten Zertifikaten

Sie müssen das Zertifikat auf den Client-Computer kopieren (in diesem Beispiel die Datei axe-selfsigned.crt), damit Ihr Client-Code oder der axe DevTools Linter Connector das Zertifikat verwenden kann.

Anschließend müssen Sie die Umgebungsvariablen wie unter [Einrichten von Umgebungsvariablen] beschrieben konfigurieren.(#setting-up-environment-variables)

Das folgende Beispiel zeigt, wie Sie den axe DevTools Linter Connecter mit einem selbst signierten Zertifikat verwenden:

NODE_EXTRA_CA_CERTS=/path/to/downloaded/axe-selfsigned.crt axe-linter-connector -s . -d .

Die Umgebungsvariable NODE_EXTRA_CA_CERTS weist node und damit axe DevTools Linter Connector an, das angegebene selbstsignierte Zertifikat zu akzeptieren, das normalerweise abgelehnt würde, wie unten gezeigt:

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)

Einrichten von Umgebungsvariablen

Um den axe DevTools Linter Connector mit einem Reverse-Proxy-Server zu verwenden, müssen Sie beide Umgebungsvariablen ändern:

  • AXE_LINTER_SERVER_URL
  • AXE_LINTER_SERVER_PORT

Sie können die Variablen beispielsweise wie folgt festlegen:

export AXE_LINTER_SERVER_URL=https://10.10.1.50
export AXE_LINTER_SERVER_PORT=443

Die URL muss mit https beginnen und der Port muss 443 sein, sonst können Sie keine Verbindung zu Ihrem Server herstellen.

Blockieren des unverschlüsselten Ports in Ihrer Firewall

Möglicherweise möchten Sie den Ihrem Axe DevTools Linter-Server zugewiesenen Port (hier Port 3000) für externen Datenverkehr blockieren, damit Sie sicher sein können, dass alle Verbindungen über den Proxyserver laufen.