Node.js 无法使用节点js使用LetsEncrypt certbot生成SSL证书

Node.js 无法使用节点js使用LetsEncrypt certbot生成SSL证书,node.js,firebase,ssl,lets-encrypt,Node.js,Firebase,Ssl,Lets Encrypt,我已经在firebase上部署了我的react应用程序,它附带了一个预配置的SSL证书,但因为我使用HTTP而不是HTTPS对node js服务器进行API调用。由于我从安全的站点浏览器中访问非安全的内容,因此阻止了我的所有API调用 最好且显而易见的选择是通过HTTPS加载所有资源以提高我的站点的安全性,这意味着为我的节点服务器生成一个由“证书颁发机构”签名的单独证书(在本例中为LetsEncrypt),但我在实现这一点上遇到了困难 复制步骤 已安装Certbot 使用命令$Certbot c

我已经在firebase上部署了我的react应用程序,它附带了一个预配置的SSL证书,但因为我使用HTTP而不是HTTPS对node js服务器进行API调用。由于我从安全的站点浏览器中访问非安全的内容,因此阻止了我的所有API调用

最好且显而易见的选择是通过HTTPS加载所有资源以提高我的站点的安全性,这意味着为我的节点服务器生成一个由“证书颁发机构”签名的单独证书(在本例中为LetsEncrypt),但我在实现这一点上遇到了困难

复制步骤

  • 已安装Certbot
  • 使用命令
    $Certbot certonly--manual
  • 键入您的域名
  • 通过HTTP-01质询过程
  • 问题

  • 如果我的域已使用SSL证书进行保护,为什么我需要在步骤3中提供我的域?我的意思是这是一个web服务器,可以通过公共IP接收API请求,为什么需要这个域

  • 对于HTTP-01质询过程,Certbot将要求您在目录内的web服务器文档根目录中创建一个具有自动生成密钥的文件。众所周知的/acme challenge/并且此文件必须包含身份验证密钥,当我执行此操作时,我得到以下错误:

    一些挑战已经失败。要修复这些错误,请确保您的域名输入正确,并且该域的DNS A/AAAA记录包含正确的IP地址


  • 我也很高兴收到其他建议。感谢您的时间。

    首先,您必须了解您有一个指向您的Firebase托管React应用程序的域。该域已具有TLS(又名SSL)证书。现在,您正试图使用
    cerbot
    ,用您已经安全的域来保护一个
    Node.JS
    服务器,该服务器没有指向它的域

    你现在应该明白了,为什么这不能像预期的那样起作用。您有一个指向React应用程序的域,但不是
    Node.JS
    服务器,您正试图使用
    certbot
    来保护该域(该域已被保护)
    certbot
    将向您的React应用程序发出HTTP-01质询请求,但它将失败,因为质询不存在

    你如何解决这个问题?给你的
    Node.JS
    服务器一个域名,并将该域名与
    certbot
    一起使用


    现在,你不必只为你的
    Node.JS
    服务器购买另一个域名。您可以使用,然后使该子域指向您的
    节点.JS
    服务器然后,您可以使用
    certbot
    来保护您的
    Node.JS
    应用程序。

    首先,您必须了解您有一个指向您的Firebase托管的React应用程序的域。该域已具有TLS(又名SSL)证书。现在,您正试图使用
    cerbot
    ,用您已经安全的域来保护一个
    Node.JS
    服务器,该服务器没有指向它的域

    你现在应该明白了,为什么这不能像预期的那样起作用。您有一个指向React应用程序的域,但不是
    Node.JS
    服务器,您正试图使用
    certbot
    来保护该域(该域已被保护)
    certbot
    将向您的React应用程序发出HTTP-01质询请求,但它将失败,因为质询不存在

    你如何解决这个问题?给你的
    Node.JS
    服务器一个域名,并将该域名与
    certbot
    一起使用


    现在,你不必只为你的
    Node.JS
    服务器购买另一个域名。您可以使用,然后使该子域指向您的
    节点.JS
    服务器然后,您可以使用
    certbot
    来保护您的
    Node.JS
    应用程序。

    您是否将Node.JS服务器托管在与Firebase react应用程序完全相同的域上?@占用一些字节我不确定是否理解您的问题,但是节点js服务器托管在Windows server上,而react应用程序托管在Firebase上。我正在使用IP将请求从我的站点发送到我的服务器。你是否将你的Node.JS服务器托管在与Firebase react应用程序完全相同的域上?@请输入一些字节我不确定是否理解你的问题,但Node JS服务器托管在Windows server上,而react应用程序托管在Firebase上。我正在使用IP将请求从我的站点发送到我的服务器。一切都很简单,但最令人困惑的是如何http:///.well-known/acme-challenge/ 可用或可访问?我从我的Web服务器端了解到我需要使用Certbot生成的令牌保存和提供静态文件,但我不知道如何或从何处调用/提供此文件。你是说你不知道如何提供文件?或者你不知道如何将它发布到网络上吗?首先,感谢你的帮助和关注,其次,这是我目前正在做的事情。创建一个指向我的节点Js服务器的子域,因为子域在创建24-48小时后就可以使用了,我想了解这个流是如何工作的。首先,启动certbot并进入域,然后在我的服务器根目录中创建.wellknown/acme challenge/authkey目录,然后在authkey文件中添加令牌,然后在质询请求到来时将文件发送到服务器…然后确保一切正常,打开我的浏览器并导航到:
    http://example.com/.well-known/acme-challenge/auth-key
    待验证。这是一条可行的路径还是推荐的路径?对我来说,这似乎没什么问题,医生们说这是可行的。试试看,如果你需要进一步的帮助,请告诉我