Verwendung von Axe DevTools Linter mit einem Reverse-Proxy
Wie man NGINX als Reverse-Proxy verwendet, um Verbindungen zu Ihrer lokalen Axe DevTools Linter-Instanz zu verschlüsseln
Sie können Ihre Verbindungen zu Ihrer lokalen Axe DevTools Linter-Instanz verschlüsseln (und Man-in-the-Middle-Angriffe verhindern), indem Sie einen Reverse-Proxy-Server wie NGINX verwenden. Dieser Leitfaden zeigt Ihnen, wie.
Anforderungen
Dieser Leitfaden geht davon aus, dass Sie auf einem Linux-Rechner installieren.
Sie benötigen folgende Software:
- Lokale Axe DevTools Linter-Binärdatei
- NGINX
- OpenSSL (zum Erstellen selbstsignierter Zertifikate)
Hilfe zur Installation von NGINX finden Sie unter Installieren | NGINX.
Weitere Informationen zur Installation des lokalen Axe DevTools Linter-Servers finden Sie unter Einrichtung des lokalen Servers.
Sie benötigen OpenSSL, um selbstsignierte Zertifikate zu erstellen. Weitere Informationen zu OpenSSL finden Sie unter OpenSSL.
NGINX konfigurieren
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 legen Sie sie im Verzeichnis /etc/nginx/config.d ab. Die folgende Konfiguration ist ein Beispiel, wie NGINX als Reverse-Proxy konfiguriert wird:
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-Zertifikatdateien, wie durch die Optionen ssl_certificate und ssl_certificate_key in der obigen Konfiguration angegeben.
Im obigen Beispiel werden Anfragen an diesen NGINX-Server zu einem Axe DevTools Linter-Server auf localhost (127.0.0.1) an Port 3000 weitergeleitet.
Nachdem Sie die Konfiguration geändert haben, starten Sie NGINX wie unten gezeigt neu:
sudo service nginx restart
DNS konfigurieren
Ein SSL-Zertifikat ist jetzt auf Ihrem Server erforderlich, da Sie verschlüsselte Verbindungen verwenden. Wenn der Server einen im DNS registrierten Namen hat (zum Beispiel als DNS A-Eintrag), können Sie einen Dienst wie Let's Encrypt verwenden, um kostenlose Zertifikate zu erstellen. Wenn Sie auf Ihren Server ausschließlich über dessen IP-Adresse zugreifen möchten, müssen Sie ein selbstsigniertes Zertifikat erstellen, da Dienste wie Let's Encrypt keine Zertifikate für IP-Adressen ausstellen – sie erfordern, dass der Server bei einem DNS-Server registriert ist.
Verwendung eines selbstsignierten Zertifikats
Für Server, die ausschließlich über ihre IP-Adresse erreicht werden, 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 365In dem obigen Befehl müssen Sie die IP-Adresse auf die IP-Adresse Ihres Servers ändern (im Beispiel ist sie auf 10.10.1.50 gesetzt), und Sie müssen die Zertifikatspfade in Ihrer Konfigurationsdatei unter /etc/nginx/config.d auf /etc/ssl/private/axe-selfsigned.key und /etc/ssl/certs/axe-selfsigned.crtverweisen lassen.
Das erstellte Zertifikat ist nur für ein Jahr gültig (die Option -days 365 ), aber Sie können es auf einen längeren Zeitraum ändern.
Verwendung des Axe DevTools Linter Connector mit selbstsignierten Zertifikaten
Sie müssen das Zertifikat auf den Client-Computer kopieren (in diesem Beispiel die axe-selfsigned.crt -Datei), damit Ihr Client-Code oder der Axe DevTools Linter Connector das Zertifikat verwenden kann.
Dann müssen Sie die Umgebungsvariablen wie im Abschnitt Einrichten von Umgebungsvariablen
Das folgende Beispiel zeigt, wie Sie Axe DevTools Linter Connector mit Ihrem selbstsignierten 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 den 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 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
Zum Beispiel können Sie die Variablen wie unten gezeigt einstellen:
export AXE_LINTER_SERVER_URL=https://10.10.1.50
export AXE_LINTER_SERVER_PORT=443Die 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
Es könnte sinnvoll sein, den Ihrem Axe DevTools Linter Server zugewiesenen Port (hier, Port 3000) von externem Datenverkehr zu blockieren, damit Sie sicherstellen können, dass alle Verbindungen über den Proxy-Server laufen.
