Você pode criptografar suas conexões com sua instância local do Axe DevTools Linter (e evitar espionagem man-in-the-middle) usando um servidor proxy reverso como o NGINX. Este guia mostra como.
Requisitos
Este guia assume que você fará a instalação em uma máquina com Linux.
Você precisará do seguinte software:
- Binário do Axe DevTools Linter local
- NGINX
- OpenSSL (para criar certificados autoassinados)
Para obter ajuda para instalar o NGINX, consulte Instalar | NGINX.
Para mais informações sobre a instalação do servidor Axe DevTools Linter local, consulte Configurando o Servidor Local.
Você precisará do OpenSSL para criar certificados autoassinados. Para mais informações sobre o OpenSSL, consulte OpenSSL.
Configurando o NGINX
Você pode criar um arquivo de configuração e colocá-lo no diretório /etc/nginx/config.d . Para este exemplo, crie um arquivo de configuração chamado axe-linter.conf e coloque-o no diretório /etc/nginx/config.d . A configuração abaixo é um exemplo de como configurar o NGINX como um proxy reverso:
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;
}
}Você precisará de dois arquivos de certificado SSL conforme indicado pelas opções ssl_certificate e ssl_certificate_key na configuração acima.
No exemplo acima, as solicitações para este servidor NGINX são encaminhadas para um servidor Axe DevTools Linter em localhost (127.0.0.1) na porta 3000.
Depois de alterar a configuração, reinicie o NGINX conforme mostrado abaixo:
sudo service nginx restart
Configurando o DNS
Agora é necessário um certificado SSL no seu servidor, uma vez que você está usando conexões criptografadas. Se o servidor tiver um nome registrado no DNS (como um registro A do DNS, por exemplo), você pode usar um serviço como o Let's Encrypt para gerar certificados gratuitamente. Se você quiser acessar seu servidor apenas através de seu endereço IP, precisará criar um certificado autoassinado porque serviços como o Let's Encrypt não emitem certificados para endereços IP—eles exigem que o servidor esteja registrado em um servidor DNS.
Usando um Certificado Autoassinado
Para servidores acessados apenas pelo endereço IP, o primeiro passo é criar os certificados autoassinados com o OpenSSL, conforme mostrado abaixo:
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 365No comando acima, você precisa alterar o endereço IP para o endereço IP do seu servidor (no exemplo está definido como 10.10.1.50), e também precisará alterar os caminhos dos certificados no seu arquivo de configuração em /etc/nginx/config.d para apontar para /etc/ssl/private/axe-selfsigned.key e /etc/ssl/certs/axe-selfsigned.crt.
O certificado criado é válido por apenas um ano (a opção -days 365 ), mas você pode alterá-lo para uma duração mais longa.
Usando o Conector Axe DevTools Linter com Certificados Autoassinados
Você precisará copiar o certificado para a máquina cliente (neste exemplo, o axe-selfsigned.crt arquivo) para que seu código cliente ou o Conector do Axe DevTools Linter possa usar o certificado.
Depois, você precisará configurar as variáveis de ambiente conforme discutido em Configuração de Variáveis de Ambiente
O exemplo a seguir mostra como usar o Conector do Axe DevTools Linter com seu certificado autoassinado:
NODE_EXTRA_CA_CERTS=/path/to/downloaded/axe-selfsigned.crt axe-linter-connector -s . -d .A variável de ambiente NODE_EXTRA_CA_CERTS informa ao node e assim ao Conector do Axe DevTools Linter para aceitar o certificado autoassinado especificado, que normalmente seria rejeitado, conforme mostrado abaixo:
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)Configuração de Variáveis de Ambiente
Para usar o Conector do Axe DevTools Linter com um servidor proxy reverso, você precisa alterar ambas as suas variáveis de ambiente:
- AXE_LINTER_SERVER_URL
- AXE_LINTER_SERVER_PORT
Por exemplo, você pode configurar as variáveis conforme mostrado abaixo:
export AXE_LINTER_SERVER_URL=https://10.10.1.50
export AXE_LINTER_SERVER_PORT=443A URL deve começar com *https* e a porta deve ser 443, caso contrário você não conseguirá se conectar ao seu servidor.
Bloqueando a Porta Não Criptografada no Seu Firewall
Você pode considerar bloquear a porta atribuída ao seu servidor Axe DevTools Linter (aqui, porta 3000) para o tráfego externo, para garantir que todas as conexões passem pelo servidor proxy.
