如何调试 SSL 连接丢失的地方?

如何调试 SSL 连接丢失的地方?

总体来说,我正在尝试为子域名设置 SSL 连接,如果我当前访问非安全网址,网站可以正常工作,但如果重新请求https://sub.domain.com服务器无响应:

此网页不可用 ERR_CONNECTION_CLOSED

这是一个多方面的问题,所以请告诉我,如果我把问题分解成小块会更好。另外,如果在 StackOverflow 上讨论这些问题会更好,请随时告诉我。以下是我看待构成这种情况的项目链的方式:

  1. SSL 证书由startssl.com
  2. URL 归 GoDaddy 所有(不是我选择的)
  3. CNAME 指向 Microsoft Azure 虚拟机
  4. 该虚拟机是标准的 Ubuntu 14.04.2 LTS
  5. Nginx 设置了反向代理,将两个 URL 指向同一服务器上的不同应用程序。
  6. 该应用程序是一个流星应用程序与 mup 一起部署。
  7. nginx 'vhost' 设置如下,以便与 Meteor/sockets 配合使用。

我尝试了几种方法来设置 SSL 并对其进行调试:

  • 下列的这些说明其中有 mup(部署工具)设置螺柱
  • 开始ssl指示因此使用 nginx 设置证书
  • 在 Azure 管理控制台中,我已上传“云服务”的证书

已知未知数:

  • 不知道使用 Microsoft Azure 是否有任何区别,或者是否没有区别,因为无论使用什么 IaaS,运行的都是 ubuntu VM。
  • 不知道 https 请求在线路的哪个位置被丢弃(例如,它到达 VM 了吗?它到达上游 nginx 代理服务器了吗?)。http:// url 工作正常,我可以查看上游服务器的日志,但在上游服务器的日志中看不到安全 url 的任何内容。
  • 从我的电脑上看traceroute,安全和不安全的 URL 似乎都有相同的路径。这在这种情况下意味着什么?

本质上,我正在寻找帮助,以了解如何尝试调试为什么无法以线性方式找到安全 URL。特别是关于第二个未知数,因为我目前不知道连接在哪里丢失/请求目前进入了多远。

谢谢!

答案1

是的,这是一个相当大的问题。从一般意义上讲,您可以像调试其他任何与网络相关的问题一样来调试它:tcpdump查看数据包是否到达了它们需要到达的地方,以及它们是否包含您期望的内容,然后检查接收数据包的日志以查看它们是如何被处理的。

鉴于错误消息的性质,我怀疑连接正在建立,然后被毫不客气地关闭。作为 HTTP/HTTPS,我倾向于认为是 nginx 配置错误导致端口 443 未使用 SSL。nginx 错误日志将提到类似内容。

相关内容