LetsEncrypt为IP而不是域工作(绿锁,快递)

时间:2018-03-27 06:16:03

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

我使用以下服务器脚本运行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);
});

1 个答案:

答案 0 :(得分:1)

出现这种情况有很多原因,自从您发布此问题以来,图书馆已经更新了很多。

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

我建议您查看视频教程:

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

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

仔细检查以下内容:

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

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