Como criar domínios locais HTTPS para seus projetos

Se você fizer qualquer tipo de desenvolvimento web local em Linuxé quase certo que você se deparou com o aviso do navegador que diz “Sua conexão não é privada”Ao testar seu próprio aplicativo no localhost.

Não é uma ameaça real à segurança, você sabe disso, mas é irritante e, mais importante, cria um problema quando você precisa testar recursos que os navegadores restringem a origens seguras, como service workers, geolocalização, acesso à área de transferência, câmeras e permissões de microfone e HTTP/2.

A solução alternativa padrão é configurar manualmente um certificado autoassinado, o que envolve gerar uma CA, assinar um certificado, confiá-lo no armazenamento do sistema, editar /etc/hostse configurar um proxy reverso – um processo que leva 30 minutos na primeira vez e parece muito trabalhoso depois disso.

magro é uma ferramenta que lida com tudo isso em um único comando, e tudo que você precisa fazer é apontá-lo para uma porta local, dar um nome a ele e obter uma imagem limpa. https://myapp.local domínio no seu navegador com um certificado válido e sem avisos.

Neste artigo, veremos como magro funciona, como instalá-lo e como configurar um HTTPS domínio local para um projeto real em execução na sua máquina.

O que é magro?

magro é um proxy reverso leve baseado em Go e um gerenciador de domínio local que automatiza todo o HTTPS configuração de domínio local, como geração de CA, criação de certificado, registro de armazenamento confiável do sistema, /etc/hosts gerenciamento e encaminhamento de porta, tudo em um comando.

Uma vez em execução, seu projeto local estará acessível em um arquivo .local domínio sobre HTTPScom suporte total para HTTP/2, WebSockets e HMR (hot module reload), o que significa que funciona corretamente com Próximo.js, Rapidamentee servidores de desenvolvimento semelhantes prontos para uso.

O proxy é executado como um daemon em segundo plano, portanto, você o inicia uma vez e ele fica fora do seu caminho.

myapp.local       → localhost:3000
api.local         → localhost:8080
dashboard.local   → localhost:5173

Como funciona o slim

Quando você corre slim start pela primeira vez, ele lida com quatro coisas automaticamente:

  • Autoridade Certificadora – slim gera uma CA raiz local e a adiciona ao armazenamento confiável do seu sistema (loja de CA do Linux ou macOS Keychain). É isso que torna o certificado confiável sem avisos do navegador. Os certificados folha por domínio são então criados sob demanda e servidos via SNI.
  • Proxy reverso – slim inicia um daemon de segundo plano usando o Go integrado httputil.ReverseProxyque encaminha o tráfego HTTPS do seu .local domínio para a porta local em que seu servidor de desenvolvimento está sendo executado.
  • DNS local – slim adiciona uma entrada para /etc/hosts para que myapp.local resolve 127.0.0.1 sem precisar de um servidor DNS local.
  • Encaminhamento de porta – slim usa iptables no Linux (ou pfctl sobre macOS) para redirecionar portas privilegiadas 80 e 443 para portas sem privilégios 10080 e 10443portanto, o processo de proxy não precisa ser executado como root.

Instalando slim no Linux

magro fornece um script de instalação de uma linha que baixa o binário e o configura para o seu sistema.

curl -sL https://slim.sh/install.sh | sh

Se preferir construir a partir do código-fonte, você precisará Vá 1,25 ou posteriormente instalado em seu sistema.

git clone https://github.com/kamranahmedse/slim.git
cd slim
make build
make install

Após a instalação, verifique se está funcionando:

slim version
Instale e verifique a versão Slim

Configurando um domínio local HTTPS

Para demonstrar como o slim funciona na prática, usaremos um exemplo real: um projeto rodando no porto 3.000 que queremos acessar em https://myapp.local.

Inicie seu servidor de desenvolvimento, que pode ser qualquer servidor de desenvolvimento local, como um Node.js aplicativo, um Frasco Python aplicativo, um Ir servidor, qualquer coisa escutando em uma porta local.

Neste exemplo, suponha que seu aplicativo já esteja em execução na porta 3000.

slim start myapp --port 3000

Na primeira vez que você executar isso, o slim irá gerar a CA raiz, registrá-la no armazenamento confiável do sistema, criar um certificado para myapp.localatualizar /etc/hostse inicie o daemon de proxy em segundo plano.

Exemplo de saída:

slim start myapp --port 3000

✔ Root CA generated and trusted
✔ Certificate created for myapp.local
✔ /etc/hosts updated → myapp.local → 127.0.0.1
✔ Port forwarding configured (443 → 10443)
✔ Proxy started

https://myapp.local → localhost:3000

Agora abra seu navegador e vá para https://myapp.localvocê verá que seu projeto é carregado por HTTPS com um certificado válido e sem avisos do navegador.

Gerenciando seus domínios locais

Aqui estão os comandos finos que você usará no dia a dia:

slim list                    # Show all currently active local domains
slim list --json             # Same output in JSON format (useful for scripting)
slim logs                    # Show access logs for all domains
slim logs -f myapp           # Tail live access logs for a specific domain
slim stop myapp              # Stop proxying a specific domain
slim stop                    # Stop all running domains and the proxy daemon

Exemplo de saída de slim list:

slim list

DOMAIN            PORT   STATUS    UPTIME
myapp.local       3000   running   14m

Opções adicionais finas

slim fornece alguns sinalizadores úteis ao iniciar um domínio.

Modos de registro – Controle a quantidade de registro de acesso que você deseja:

slim start myapp -p 3000 --log-mode full       # Full request/response logs (default)
slim start myapp -p 3000 --log-mode minimal    # Just method, path, and status code
slim start myapp -p 3000 --log-mode off        # No access logging

Aguarde o upstream – Se o seu servidor de desenvolvimento demorar alguns segundos para iniciar, use --wait so slim espera até que a porta upstream esteja realmente pronta antes de retornar:

slim start myapp -p 3000 --wait --timeout 30s

Desinstalar – Se você deseja remover tudo o que o slim configurou, incluindo CA, certificados, entradas de hosts, regras de encaminhamento de porta e arquivos de configuração, execute:

slim uninstall

Todos os dados de tempo de execução do slim residem em ~/.slim/:

~/.slim/config.yaml     # Configuration file
~/.slim/certs/          # Per-domain certificates
~/.slim/ca/             # Root CA certificate and key
~/.slim/access.log      # Access logs for all proxied domains

Se você precisar inspecionar manualmente ou fazer backup de um certificado, é aqui que você deve procurar.

Por que isso é importante para o desenvolvimento local

Além da conveniência de não ver avisos do navegador, executar seu projeto local em HTTPS com uma experiência real .local domínio desbloqueia vários recursos do navegador que funcionam apenas em origens seguras:

  • Trabalhadores de serviço – Necessário para desenvolvimento de PWA e testes offline.
  • API de geolocalização – Os navegadores bloqueiam isso em origens não HTTPS.
  • API da área de transferência – O acesso de leitura/gravação à área de transferência requer HTTPS.
  • Câmera e microfone – getUserMedia não funcionará em HTTP simples.
  • HTTP/2 – Os navegadores negociam apenas HTTP/2 sobre TLS, portanto, testar o comportamento do HTTP/2 requer HTTPS.
  • Cookies seguros – Cookies com sinalizador Secure são enviados apenas por HTTPS, tornando o teste de sessão no host local não confiável sem ele.

Se alguma parte do seu projeto depender desses recursos, o teste em localhost simples proporcionará um comportamento diferente da produção. slim preenche essa lacuna sem qualquer configuração manual.

Dica profissional: se você estiver trabalhando com vários projetos simultaneamente, poderá executar vários slim start comandos apontando para portas diferentes – cada um recebe o seu próprio .local domínio, seu próprio certificado e aparece em uma pequena lista.

Projeto fino: https://github.com/kamranahmedse/slim

Deseja saber mais sobre Software Livre Clique Aqui!

https domínio local linux,desenvolvimento https local linux,certificado autoassinado localhost linux,https localhost desenvolvedor linux,domínio local https linux

Deixe um comentário

Translate »