WP Migrate DB Pro (Português)
Configurar HTTPS localmente pode ser complicado. Mesmo se você conseguir fazer com que os certificados autoassinados sejam enviados, você ainda terá erros de privacidade do navegador. Neste artigo, veremos como criar sua própria autoridade de certificação para seus servidores locais para que você possa executar sites HTTPS localmente sem problemas.
Por que HTTPS localmente?
Por que não apenas usa HTTP regular localmente? Porque se seu site de produção for somente HTTPS e você estiver desenvolvendo localmente em HTTP regular, seus ambientes de desenvolvimento e produção não são tão semelhantes quanto poderiam ser. Por exemplo, meu ambiente de desenvolvimento para este site (deliciousbrains.com) é executado como um servidor Ubuntu em uma máquina virtual VMware (VM) em seu Mac. O site de produção é um servidor Ubuntu rodando em Linode com uma configuração quase idêntica.
Você definitivamente quer que seu ambiente dev espelhe a produção o mais próximo possível. aparecendo na produção que não apareceu no dev. Executar HTTP quando seu site de produção é apenas HTTPS é definitivamente um risco desnecessário.
No entanto, tentar obter um certificado SSL funcionando com seu servidor local é uma droga se você não estiver usando uma ferramenta que faça isso para você como Valet.
Se você já tentou executar um site HTTPS localmente, provavelmente viu algo como o seguinte no Chrome:
A solução alternativa costumava ser criar um certificado autoassinado e usá-lo. O MAMP Pro faz isso por você e foi minha preferência por anos. Infelizmente, isso não é mais possível. A abordagem moderna é se tornar sua própria Autoridade de Certificação (CA)!
Como funciona
Para solicitar um certificado SSL de uma CA como Verisign ou GoDaddy, você envia uma Assinatura de Certificado Request (CSR), e eles fornecem um certificado em troca, que assinaram usando seu certificado raiz e chave privada. Todos os navegadores possuem uma cópia (ou acessam uma cópia do sistema operacional) do certificado raiz da Verisign, para que o navegador possa verificar se o seu certificado foi assinado por uma CA confiável.
É por isso que quando você gera um auto- certificado assinado, o navegador não confia nele. É autoassinado. Não foi assinado por uma CA. Mas podemos gerar nosso próprio certificado raiz e chave privada. Em seguida, adicionamos o certificado raiz a todos os dispositivos que possuímos apenas uma vez, e então todos os certificados que geramos e assinamos serão inerentemente confiáveis.
Tornando-se uma (pequena) autoridade de certificação
É meio ridículo como é fácil gerar os arquivos necessários para se tornar uma autoridade de certificação. Leva apenas dois comandos. Primeiro, geramos nossa chave privada:
Será solicitada uma senha, que eu recomendo não pular e manter em segurança. A frase secreta impedirá que qualquer pessoa que obtenha sua chave privada gere um certificado raiz próprio. A saída deve ser semelhante a esta:
Em seguida, geramos um certificado raiz:
Será solicitada a senha de sua chave privada (que você acabou de escolher) e um monte de perguntas. As respostas a essas perguntas não são tão importantes. Eles aparecem ao olhar para o certificado, o que você quase nunca fará. Sugiro tornar o Nome comum algo que você reconhecerá como seu certificado raiz em uma lista de outros certificados. Essa é realmente a única coisa que importa.
Agora você deve ter dois arquivos: myCA.key (sua chave privada) e myCA.pem (seu certificado raiz ).
🎉 Parabéns, agora você é um CA. Mais ou menos.
Para se tornar uma CA de verdade, você precisa obter seu certificado raiz em todos os dispositivos do mundo. Vamos começar com os que você possui.
Instalando seu certificado raiz
Precisamos adicionar o certificado raiz a todos os laptops, desktops, tablets e telefones que acessarão seus sites HTTPS . Isso pode ser um pouco chato, mas a boa notícia é que só precisamos fazer isso uma vez. Assim que nosso certificado raiz estiver em cada dispositivo, ele estará em vigor até expirar.
Adicionando o certificado raiz ao macOS Keychain
Via CLI
Via IU
- Abra o aplicativo macOS Keychain
- Vá para Arquivo > Importar itens…
- Selecione seu arquivo de chave privada (isto é, myCA.pem)
- Pesquise o que você respondeu como o nome comum acima
- Clique duas vezes em seu certificado raiz na lista
- Expanda a seção Confiança
- Altere a caixa de seleção Ao usar este certificado: para “Sempre Trust ”
- Feche a janela do certificado
- Será solicitado que você digite sua senha (ou passe o dedo), faça isso
- 🎉 Comemore!
Adicionando o certificado raiz ao iOS
Se desejar adicionar o certificado raiz aos seus dispositivos iOS, você pode fazer isso facilmente seguindo estas etapas:
- Envie por e-mail o certificado raiz para você mesmo para que possa acessá-lo em seu dispositivo iOS
- Clique no anexo do e-mail em seu dispositivo iOS
- Vá para o aplicativo de configurações e clique em ‘Perfil baixado’ próximo ao topo
- Clique em instalar no canto superior direito
- Depois de instalado, clique em Fechar e volte para a página principal de Configurações
- Vá para “Geral” > “Sobre”
- Role até a parte inferior e clique em “Configurações de confiança do certificado”
- Habilite seu certificado raiz em “ATIVAR FULL TRUST FOR ROOT CERTIFICATES”
Criando certificados assinados pela CA Sites Dev
Agora que somos CA em todos os nossos dispositivos, podemos assinar certificados para qualquer novo site dev que precise de HTTPS. Primeiro, criamos uma chave privada:
Em seguida, criamos um CSR:
Você obterá todas as perguntas anteriores e, novamente, suas respostas não importam. Na verdade, eles importam ainda menos porque você não verá este certificado em uma lista ao lado de outros.
A seguir, criaremos o certificado usando nosso CSR, a chave privada CA, o certificado CA e um arquivo de configuração, mas primeiro precisamos criar esse arquivo de configuração.
O arquivo de configuração é necessário para definir a extensão do Nome Alternativo do Assunto (SAN) que é definido nesta seção (isto é, extensão) do certificado:
O arquivo de configuração (dev.deliciousbrains.com. ext) continha o seguinte:
Estaremos executando o comando openssl x509
porque, pelo que entendi, o comando x509 é necessário para fazer a assinatura com o certificado raiz e a chave privada. Encontrei este arquivo de configuração de exemplo no Stack Overflow e parece funcionar.
Agora, executamos o comando para criar o certificado:
Agora posso configurar meu servidor da web com a chave privada e o certificado. Se estiver executando um servidor Linux, você pode usar as instruções em Instalar WordPress na série Ubuntu 20.04. Se estiver usando MAMP, você pode selecionar o certificado e os arquivos de chave usando a IU:
Infelizmente MAMP (testado com a versão 5.7) não cria certificados SSL com uma CA, então você terá que usar o método manual por enquanto.
Para quaisquer outros sites de desenvolvimento, podemos apenas repetir esta última parte da criação de um certificado, não temos que criar uma nova CA para cada site.
Script Shell
Para tornar as coisas ainda mais rápidas, aqui está um script de shell útil que você pode modificar para seus próprios propósitos:
Conclusão
Então aí está, como se tornar seu próprio certificado local autoridade para assinar seus certificados SSL locais e usar HTTPS em seus sites locais. Esperamos que isso elimine a temida mensagem ‘Sua conexão não é particular’ para você no Chrome.