Usando Axe DevTools Linter com um Proxy Reverso

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
Free Trial
Not for use with personal data

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

note

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 365

No 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=443

A 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.