在使用openresty实现ssl时,AWS EC2实例的有效ssl错误需要sni支持

在使用openresty实现ssl时,AWS EC2实例的有效ssl错误需要sni支持,ssl,nginx,amazon-ec2,reverse-proxy,openresty,Ssl,Nginx,Amazon Ec2,Reverse Proxy,Openresty,我已经构建了一个web应用程序app.mywebapp.com。我计划为我的用户实施白色标签 用户示例网站:userwebsite.com。我想将他们的子域指向我的应用程序 示例:dashboard.userwebsite.com应指向app.mywebapp.com 我已在我的用户DNS设置中添加了CNAME记录 我正在使用openresty通过反向代理实现动态SSL证书处理 我的webapp在一个AWS EC2实例上运行,SSL由loadbalancer处理 我已经使用loadbalance

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

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

示例:
dashboard.userwebsite.com
应指向
app.mywebapp.com

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

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

我的webapp在一个AWS EC2实例上运行,SSL由loadbalancer处理

我已经使用loadbalancer创建了另一个EC2实例来处理来自我的用户网站的SSL请求

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

“有效ssl所需的sni支持”证书不受信任

下面是通过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时,您应该查看错误日志文件,以了解它将告诉您什么。但大多数情况下,这些都是常见的错误:

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

目录权限 如果openresty无法写入,它将失败。但是在某些情况下,OpenResty/Nginx仍然可以工作,但是去液化的操作将失败

重定向问题以及GUI/lua resty auto ssl是否位于正确位置 这很难调试,但解释起来很简单,在实现重定向(如强制HTTP到HTTPS)时要一步一步地进行,因为您可能可以获得新证书,然后不续订它

“确切地点”的意思是

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

最后评论:
如果可以,请尝试
GUI/lua resty auto ssl
中最简单的示例,然后每次更改,一步一步地重试,并查看日志文件。如果您这样做,可能需要30~60分钟,但可以节省调试时间,特别是在您第一次使用时。

发生这种情况的原因是,由于某种原因,您的服务器无法获取新证书。我无法完全调试您的设置,但我可以向您保证,文档可以正常工作,但可能不容易调试

普罗蒂普;注意你的日志 您的问题是不完整的,但大多数情况下,在使用OpenResty时,您应该查看错误日志文件,以了解它将告诉您什么。但大多数情况下,这些都是常见的错误:

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

目录权限 如果openresty无法写入,它将失败。但是在某些情况下,OpenResty/Nginx仍然可以工作,但是去液化的操作将失败

重定向问题以及GUI/lua resty auto ssl是否位于正确位置 这很难调试,但解释起来很简单,在实现重定向(如强制HTTP到HTTPS)时要一步一步地进行,因为您可能可以获得新证书,然后不续订它

“确切地点”的意思是

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

最后评论:
如果可以,请尝试
GUI/lua resty auto ssl
中最简单的示例,然后每次更改,一步一步地重试,并查看日志文件。如果这样做,可能需要30~60分钟,但可以节省调试时间,特别是首次使用时。

什么是openresty什么是openresty