Utilisation d'Axe DevTools Linter avec un Proxy Inverse
Comment utiliser NGINX comme proxy inverse pour crypter les connexions vers votre instance d'Axe DevTools Linter sur site
Vous pouvez crypter vos connexions vers votre instance d'Axe DevTools Linter sur site (et empêcher l'espionnage par intermédiaire) en utilisant un serveur proxy inverse tel que NGINX. Ce guide vous montre comment procéder.
Exigences
Ce guide suppose que vous installerez sur une machine Linux.
Vous aurez besoin des logiciels suivants :
- Binaire Axe DevTools Linter sur site
- NGINX
- OpenSSL (pour créer des certificats auto-signés)
Pour obtenir de l'aide pour installer NGINX, voir Installer | NGINX.
Pour plus d'informations sur l'installation du serveur Axe DevTools Linter sur site, voir Configuration du Serveur sur Site.
Vous aurez besoin d'OpenSSL pour créer des certificats auto-signés. Pour plus d'informations sur OpenSSL, voir OpenSSL.
Configuration de NGINX
Vous pouvez créer un fichier de configuration et le placer dans le répertoire /etc/nginx/config.d . Pour cet exemple, créez un fichier de configuration nommé axe-linter.conf et placez-le dans le répertoire /etc/nginx/config.d . La configuration ci-dessous est un exemple de configuration de NGINX en tant que proxy inverse :
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;
}
}Vous aurez besoin de deux fichiers de certificats SSL comme indiqué par les options ssl_certificate et ssl_certificate_key dans la configuration ci-dessus.
Dans l'exemple ci-dessus, les demandes à ce serveur NGINX sont transférées à un serveur Axe DevTools Linter sur localhost (127.0.0.1) au port 3000.
Après avoir modifié la configuration, redémarrez NGINX comme indiqué ci-dessous :
sudo service nginx restart
Configuration de DNS
Un certificat SSL est requis sur votre serveur maintenant que vous utilisez des connexions chiffrées. Si le serveur possède un nom enregistré dans le DNS (comme un enregistrement DNS A, par exemple), vous pouvez utiliser un service tel que Let's Encrypt pour générer des certificats gratuits. Si vous souhaitez accéder à votre serveur uniquement via son adresse IP, vous devez créer un certificat auto-signé car un service tel que Let's Encrypt n'émettra pas de certificats pour les adresses IP—ils exigent que le serveur soit enregistré auprès d'un serveur DNS.
Utilisation d'un Certificat Auto-signé
Pour les serveurs accessibles uniquement via leur adresse IP, la première étape consiste à créer les certificats auto-signés avec OpenSSL comme indiqué ci-dessous :
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 365Dans la commande ci-dessus, vous devez changer l'adresse IP par l'adresse IP de votre serveur (dans l'exemple, elle est définie sur 10.10.1.50), et vous devrez modifier les chemins des certificats dans votre fichier de configuration dans /etc/nginx/config.d pour pointer vers /etc/ssl/private/axe-selfsigned.key et /etc/ssl/certs/axe-selfsigned.crt.
Le certificat créé est valable pour un an seulement (l'option -days 365 ), mais vous pouvez le changer pour une durée plus longue.
Utilisation du Connecteur Axe DevTools Linter avec des Certificats Auto-signés
Vous devrez copier le certificat sur la machine cliente (dans cet exemple, le fichier axe-selfsigned.crt ) pour que votre code client ou Axe DevTools Linter Connector puisse utiliser le certificat.
Ensuite, vous devrez configurer les variables d'environnement comme discuté dans Configuration des variables d'environnement
L'exemple suivant montre comment utiliser Axe DevTools Linter Connector avec votre certificat auto-signé :
NODE_EXTRA_CA_CERTS=/path/to/downloaded/axe-selfsigned.crt axe-linter-connector -s . -d .La variable d'environnement NODE_EXTRA_CA_CERTS indique à node et donc à Axe DevTools Linter Connector d'accepter le certificat auto-signé spécifié, qui serait normalement rejeté, comme indiqué ci-dessous :
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)Configuration des variables d'environnement
Pour utiliser Axe DevTools Linter Connector avec un serveur proxy inverse, vous devez changer ses deux variables d'environnement :
- AXE_LINTER_SERVER_URL
- AXE_LINTER_SERVER_PORT
Par exemple, vous pouvez définir les variables comme indiqué ci-dessous :
export AXE_LINTER_SERVER_URL=https://10.10.1.50
export AXE_LINTER_SERVER_PORT=443L'URL doit commencer par https et le port doit être 443, sinon vous ne pourrez pas vous connecter à votre serveur.
Blocage du port non sécurisé dans votre pare-feu
Vous pourriez envisager de bloquer le port assigné à votre serveur Axe DevTools Linter (ici, le port 3000) pour le trafic extérieur afin de vous assurer que toutes les connexions passent par le serveur proxy.
