【问题标题】:SSL Let's Encrypt installation not working on NGINX at AWS EC2SSL Let's Encrypt 安装在 AWS EC2 的 NGINX 上不起作用
【发布时间】:2018-11-17 04:05:29
【问题描述】:

我有一个安装了 NGINX 并且可以正常工作的 AWS EC2 实例,但是使用 Let's Encrypt 的 SSL 无法访问。

Nginx 配置

文件夹 /etc/pki/tls 包含 Let's Encrypt corretly 生成的文件

此 EC2 实例的 AWS 安全组

不涉及负载均衡器 (ELB),Route 53 将流量直接发送到此 EC2 实例。

当我尝试通过 HTTP 访问网站时,一切正常,但是当我尝试通过 HTTPS 连接时,这是不可能的

非常感谢

【问题讨论】:

  • 有人在听 443 端口吗?重启nginx后netstat -apn|grep 443的输出是什么?
  • 在这种情况下,请在您的帖子中以文本而不是图像的形式提供配置。
  • 谢谢你的提示,下一个问题我会做的。
  • @Alexey,感谢您的帮助。我使用 netstat 进行了测试,发现 443 端口正在监听

标签: ssl nginx amazon-ec2 lets-encrypt


【解决方案1】:

根据https://nginx.org/en/docs/http/ngx_http_core_module.html#listen,您在listen 配置指令中缺少ssl 关键字。

ssl 参数 (0.7.14) 允许指定此端口上接受的所有连接都应在 SSL 模式下工作。这允许对处理 HTTP 和 HTTPS 请求的服务器进行更紧凑的配置。

另请参阅以https://nginx.org/en/docs/http/configuring_https_servers.html#single_http_https_server 开头的示例,例如:

可以配置一个服务器同时处理 HTTP 和 HTTPS 请求:

server {
    listen              80;
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     www.example.com.crt;
    ssl_certificate_key www.example.com.key;
    ...
}

此外,为了调试,您可以首先使用任何 http 客户端(例如 wgetcurlopenssl s_client)从服务器本身(到自身)进行本地连接。当这对 HTTPS 成功运行时,您可以远程尝试。

【讨论】:

  • 我什至建议在本地使用 wget/openssl 检查端口之前检查端口是否被监听。这可以通过netstat -apn|grep 443 完成
  • @Alexey 是的,但是任何 HTTP 客户端如果由于端口未处于 LISTEN 状态而根本无法连接,都会很快通知您。
  • 是的,但我仍然会首先使用netstat 进行检查,以避免中间有任何东西阻止我连接(这可能会导致超时),比如防火墙等。所以首先确保软件正在监听端口,然后尝试连接nc 等等 - 这就是我习惯测试的方式
  • 嗨@PatrickMevzek,谢谢你,你太完美了!非常感谢,您为我节省了很多时间,这几天我一直在努力解决这个问题
猜你喜欢
  • 2018-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-18
  • 1970-01-01
  • 2023-03-02
  • 2023-03-11
  • 2019-01-07
相关资源
最近更新 更多