【问题标题】:LetsEncrypt working for IP but not Domain (greenlock, express)LetsEncrypt 适用于 IP 但不适用于域(greenlock,express)
【发布时间】:2018-03-27 06:16:03
【问题描述】:

我正在使用以下服务器脚本来运行 http、https 服务器并将所有 http 请求重定向到 https。

当我从 IP 地址本地和远程访问服务器时,请求会重定向到 https,并且 api 会出现不安全的警告。

但是当我通过域访问相同的路由时,我得到"Site cannot be Reached" 错误。

虽然访问http://example.com/test-route 会重定向到https://example.com/test-route,但我仍然收到Site can't be reached 错误。

import http from 'http';
import https from 'https';
import redirectHttps from 'redirect-https';
import greenlock from 'greenlock';
import app from '../app';

var le = greenlock.create({
  server: 'staging', // using https://acme-v01.api.letsencrypt.org/directory in prod
  configDir: 'certs',
  approveDomains: (opts, certs, cb) => {
    if (certs) {
      opts.domains = ['example.com']
    } else {
      opts.email = 'me@mymail.com',
      opts.agreeTos = true;
    }
    cb(null, {
      options: opts,
      certs: certs
    });
  },
});


http.createServer(le.middleware(redirectHttps())).listen(80, function() {
  console.log("Server Running On http @ port " + 80);
});

https.createServer(le.httpsOptions, le.middleware(app)).listen(443, function() {
  console.log("Server Running On https @ port " + 443);
});

【问题讨论】:

    标签: node.js express ssl lets-encrypt greenlock


    【解决方案1】:

    发生这种情况的原因有很多,自您发布此问题以来,库中已更新了很多内容。

    我最近花了很多时间更新文档和示例:

    我建议看一下视频教程:

    并检查故障排除部分中的每个项目。供参考:

    如果示例不起作用怎么办?

    仔细检查以下内容:

    • 面向公众的 IP 用于http-01 挑战
      • 您是否将这个作为面向公众的网络服务器运行(好)?还是本地主机(坏)?
      • ifconfig 是否显示公共地址(好)?还是私有的 - 10.x、192.168.x 等(坏)?
      • 如果您在非公共服务器上,您是否使用dns-01 质询?
    • 正确的 ACME 版本
      • 让我们加密 v2 (ACME v2) 必须使用version: 'draft-11'
      • Let's Encrypt v1 必须使用version: 'v01'
    • 有效的电子邮件
      • 您必须将email 设置为有效地址
      • MX 记录必须验证(dig MX example.com 代表 'john@example.com')
    • 有效的 DNS 记录
      • 您必须将 approveDomains 设置为真实域
      • 必须有公共 DNS 记录(使用 dig +trace A example.com; dig +trace www.example.com 测试 [ 'example.com', 'www.example.com' ])
    • 写入权限
      • 您必须将configDir 设置为可写位置(使用touch ~/acme/etc/tmp.tmp 进行测试)
    • 端口绑定权限
      • 您必须能够绑定到端口 80 和 443
      • 您可以通过sudo 或setcap 执行此操作
    • API 限制
      • 您不得超过每个域、证书、IP 地址等的 API usage limits
    • 红色锁,不受信任
      • 您必须更改server 值在生产中
      • 将服务器 URL 的“acme-staging-v02”部分缩短为“acme-v02”

    如果您仍然遇到问题,请在存储库中发布问题,我会尽力帮助您解决问题。确保升级到最新版本,因为它具有更好的调试日志记录。

    【讨论】:

    • 嗨@coolaj86 Greenlock 需要特定版本的 Express 吗?它适用于 Express 3 吗?抱歉,如果这是题外话
    • 它没有。但它确实需要节点 v10.12+ 左右,IIRC。它根本不需要快递。它不使用快递,反之亦然。它只是标准的、普通的、node.js HTTP 处理程序。
    • 非常感谢,coolaj86,不胜感激。我不知道如何让 greenlock 在我的设置上工作,所以最终只是按照他们在此处的说明使用 Certbot for Ubuntu certbot.eff.org/instructions?ws=other&os=ubuntufocal - Greenlock 似乎正在运行,但始终无法让 https 站点显示并且无法不知道问题出在哪里
    猜你喜欢
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2016-04-25
    相关资源
    最近更新 更多