【问题标题】:sni-support-required-for-valid-ssl error with AWS EC2 instance while implementing ssl with openresty在使用 openresty 实现 ssl 时,AWS EC2 实例出现 sni-support-required-for-valid-ssl 错误
【发布时间】:2020-04-01 02:38:35
【问题描述】:

我已经构建了一个网络应用程序app.mywebapp.com。我计划为我的用户实施白标。

用户示例网站:userwebsite.com。我想将他们的子域指向我的应用程序。

例如:dashboard.userwebsite.com 应该指向app.mywebapp.com

我在我的用户 DNS 设置中添加了 CNAME 记录

我正在使用openresty 通过反向代理实现动态SSL 证书处理。

我的 web 应用在一个 AWS EC2 实例上运行,SSL 由负载均衡器处理。

我创建了另一个带有负载均衡器的 EC2 实例来处理来自我的用户网站的 SSL 请求。

当我在浏览器中键入 EC2 实例公共 DNS 时,我收到不安全的 SSL 错误消息

"sni-support-required-for-valid-ssl" certificate is not trusted

这是通过openresty处理SSL的nginx.conf文件

    user  www-data;
    events {
      worker_connections 1024;
    }

    http {
      lua_shared_dict auto_ssl 1m;
      lua_shared_dict auto_ssl_settings 64k;
      resolver 8.8.8.8 ipv6=off;

      init_by_lua_block {
        auto_ssl = (require "resty.auto-ssl").new()
        auto_ssl:set("allow_domain", function(domain)
          return true
        end)
        auto_ssl:init()
      }

      init_worker_by_lua_block {
        auto_ssl:init_worker()
      }

      server {
        listen 443 ssl;
        ssl_certificate_by_lua_block {
          auto_ssl:ssl_certificate()
        }
        ssl_certificate /etc/ssl/resty-auto-ssl-fallback.crt;
        ssl_certificate_key /etc/ssl/resty-auto-ssl-fallback.key;

    proxy_ssl_server_name on;

    location / {
            proxy_set_header Host app.mywebapp.com;
            proxy_set_header Referer $host$uri;
            proxy_buffer_size          128k;
            proxy_buffers              4 256k;
              proxy_busy_buffers_size    256k;

            proxy_set_header User-Agent $http_user_agent;
            proxy_set_header X-Real-IP $remote_addr;

            proxy_set_header Accept-Encoding "";
            proxy_set_header Accept-Language $http_accept_language;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto  https;
            proxy_read_timeout 5m;

            proxy_pass https://app.mywebapp.com;
        }
      }

      server {
        listen 80;
        location /.well-known/acme-challenge/ {
          content_by_lua_block {
            auto_ssl:challenge_server()
          }
        }

    location /{
    return 301 https://$host$request_uri;
    }

      }

      server {
        listen 127.0.0.1:8999;
        client_body_buffer_size 128k;
        client_max_body_size 128k;

        location / {
          content_by_lua_block {
            auto_ssl:hook_server()
          }
        }
      }
    }

【问题讨论】:

  • 什么是 openresty
  • 我遇到了这个问题,tail -F /usr/local/openresty/nginx/logs/error.log 在终端点击刷新帮助我了解了问题所在

标签: ssl nginx amazon-ec2 reverse-proxy openresty


【解决方案1】:

发生这种情况是因为,由于某种原因,您的服务器未能获得新证书。我无法完全调试您的设置,但我可以向您保证https://github.com/GUI/lua-resty-auto-ssl 的文档有效,但可能不容易调试。

提示;查看您的日志

您的问题不完整,但大多数时候,在使用 OpenResty 时,您应该查看错误日志文件以了解它会告诉您的内容。但大多数时候,这些都是常见的错误:

请求过多

GUI/lua-resty-auto-ssl 会非常非常快地重试。这意味着如果您部署了错误的配置,您很可能会达到 Let's Encript 限制。如果您正在进行繁重的调试,建议您使用另一个子域,以免主域饱和

目录权限

如果openresty不能写,就会失败。但是在某些情况下,你的 OpenResty/Nginx 仍然可以工作,但是 Deydrated 会失败

重定向问题和 GUI/lua-resty-auto-ssl 是否在确切位置

这很难调试,但解释很简单,在实现重定向(如强制 HTTP 到 HTTPS)时逐步进行,因为您可能能够获得新证书,然后不更新它。

“确切的地方”是指

  • 如果 Let's encrypt 将在端口 80 上尝试,您需要有GUI/lua-resty-auto-ssl sn-p 那里
  • 如果 Let's encrypt 将在域 example.com 上尝试,您需要在那里有GUI/lua-resty-auto-ssl sn-p

决赛:

如果可以,请尝试GUI/lua-resty-auto-ssl 中的最小示例,然后您所做的每次更改,再试一次,逐步进行,并查看您的日志文件。如果你这样做,可能会多花 30~60 分钟,但可以节省你几天的调试时间,特别是如果你是第一次使用。

【讨论】:

    猜你喜欢
    • 2015-09-28
    • 2021-11-28
    • 2022-11-30
    • 2015-08-24
    • 2016-10-07
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    相关资源
    最近更新 更多