Se você deseja testar service workers em um dispositivo cliente que não pode executar um servidor da web no localhost, a técnica geral é a seguinte:
- Dê ao seu servidor um nome de host.
- Dê um certificado a este nome de host.
- Faça com que os IPs confiem na CA que emitiu este certificado.
Mas isso é mais fácil dizer do que fazer. Em um AMA de novembro de 2016 no Reddit, um representante do Let's Encrypt reconheceu que HTTPS em uma LAN privada "é uma pergunta realmente difícil e acho que ninguém apresentou uma resposta satisfatória até agora."
Maneiras comuns de dar ao seu computador um nome de host envolvem dar a ele um endereço IP interno estável, não um que mude diariamente ou toda vez que você reinicia o seu dispositivo de gateway de Internet. Você precisará configurar o servidor DHCP em sua rede, geralmente em seu gateway, para configurar uma "reserva" que associa um endereço privado específico (normalmente em 10/8
ou192.168/16
) com o endereço MAC da placa Ethernet da estação de trabalho de desenvolvimento. Para isso, leia o manual do seu gateway.
Agora que sua estação de trabalho de desenvolvimento tem um endereço IP estável, há uma troca de tempo / dinheiro. Se você deseja aprender o uso avançado de DNS e OpenSSL e instalar um certificado raiz em todos os dispositivos com os quais planeja testar:
- Execute um servidor DNS interno em sua rede. Isso pode ser em seu gateway ou em sua estação de trabalho de desenvolvimento.
- Configure seu servidor DNS para ser autoritativo para alguns TLDs inventados e recursivo para outros TLDs.
- Dê um nome estável ao endereço IP privado da estação de trabalho de desenvolvimento. Isso dá a ele um nome interno.
- Configure seu servidor DHCP para fornecer o endereço deste servidor DNS a outros dispositivos que obtenham concessões.
- Em sua estação de trabalho de desenvolvimento, use OpenSSL para gerar pares de chaves para uma autoridade de certificação privada e o servidor web.
- Usando OpenSSL, emita um certificado raiz para a CA e um certificado para o nome interno do servidor web.
- Configure HTTPS no servidor da web em sua estação de trabalho de desenvolvimento usando este certificado.
- Instale o certificado raiz da CA como um certificado raiz confiável em todos os dispositivos.
- Em todos os dispositivos, acesse este nome interno.
Se você não pode adicionar um certificado raiz ou controlar o DNS local, como se você planeja testar com dispositivos de terceiros (BYOD) ou com mais navegadores bloqueados que não permitem que os usuários adicionem certificados raiz confiáveis, como os principais consoles de videogame, você precisará de um nome de domínio totalmente qualificado (FQDN):
- Compre um domínio de um registrador que oferece DNS com uma API . Isso poderia ser diretamente dentro de um TLD ou de um dos provedores de DNS dinâmico que o incluiu na Lista Pública de Sufixos. (Provedores de DNS dinâmico não PSL são inaceitáveis devido aos limites de taxa impostos por Let's Encrypt .)
- No arquivo de zona deste domínio, aponte um
A
registro para o endereço IP privado da estação de trabalho de desenvolvimento. Isso fornece um FQDN à sua estação de trabalho de desenvolvimento.
- Use o Dehydrated , um cliente ACME que suporta o
dns-01
desafio, para obter um certificado para este FQDN da autoridade de certificação Let's Encrypt.
- Configure HTTPS no servidor da web em sua estação de trabalho de desenvolvimento usando este certificado.
- Em todos os dispositivos, acesse este nome.