incapaz de gerar certificado SSL com LetsEncrypt certbot usando node js

Aug 27 2020

Implantei meu aplicativo react no firebase, que vem com um certificado SSL pré-configurado, mas desde que estou fazendo chamadas de API para um servidor node js usando HTTP e não HTTPS. Como estou acessando um conteúdo não seguro de um site seguro, o navegador está bloqueando todas as minhas chamadas de API.

A melhor e mais óbvia escolha é carregar todos os recursos via HTTPS para melhorar a segurança do meu site, o que significa gerar um certificado separado assinado pela 'Autoridade de Certificação', neste caso, LetsEncrypt para meu servidor de nó, mas estou tendo problemas para fazer isso.

Passos para reproduzir

  1. Certbot instalado
  2. Gere um certificado SSL com Certbot com o comando $ certbot certonly --manual
  3. Digite seu nome de domínio
  4. Passe pelo processo de desafio HTTP-01

Questões

  1. Por que preciso fornecer meu domínio na etapa 3 se meu domínio já está protegido por um certificado SSL? Quer dizer, este é um servidor web e receberia solicitações de API via IP público por que a necessidade do domínio?

  2. Para o processo de desafio HTTP-01, Certbot solicitará que você crie um arquivo com uma chave gerada automaticamente na raiz do documento do seu servidor web, dentro dos diretórios .well-known / acme-challenge / e este arquivo deve conter a chave de autenticação, quando Eu faço isso e estou recebendo o erro abaixo:

    Alguns desafios falharam. Para corrigir esses erros, certifique-se de que seu nome de domínio foi inserido corretamente e que os registros DNS A / AAAA desse domínio contêm o endereço IP correto.

Eu também ficaria feliz em receber outras sugestões. Obrigado pelo seu tempo.

Respostas

2 Take-Some-Bytes Aug 28 2020 at 18:11

Primeiro, você precisa entender que tem um domínio que aponta para seu aplicativo React hospedado no Firebase . Esse domínio já tem um certificado TLS (também conhecido como SSL). Agora, você está tentando proteger um Node.JSservidor, que não tem um domínio apontando para ele, usando cerbot, com seu domínio já protegido.

Você deve ver agora por que isso não funciona conforme o esperado. Você tem um domínio que está apontando para seu aplicativo React, mas não para seu Node.JSservidor, e está tentando usar certbotpara proteger esse domínio (que já está protegido de qualquer maneira). certbotfará uma solicitação ao seu aplicativo React para o desafio HTTP-01, e ele falhará, porque o desafio não está lá.

Como voce resolve isso? Dando ao seu Node.JSservidor um nome de domínio e usando esse domínio com certbot.

Agora, você não precisa comprar outro nome de domínio apenas para o seu Node.JSservidor. Você pode usar um subdomínio e, em seguida, fazer com que esse subdomínio aponte para o seu Node.JSservidor. Então , você pode usar certbotpara proteger seu Node.JSaplicativo.