![如何调试 SSL 连接丢失的地方?](https://linux22.com/image/664648/%E5%A6%82%E4%BD%95%E8%B0%83%E8%AF%95%20SSL%20%E8%BF%9E%E6%8E%A5%E4%B8%A2%E5%A4%B1%E7%9A%84%E5%9C%B0%E6%96%B9%EF%BC%9F.png)
总体来说,我正在尝试为子域名设置 SSL 连接,如果我当前访问非安全网址,网站可以正常工作,但如果重新请求https://sub.domain.com服务器无响应:
此网页不可用 ERR_CONNECTION_CLOSED
这是一个多方面的问题,所以请告诉我,如果我把问题分解成小块会更好。另外,如果在 StackOverflow 上讨论这些问题会更好,请随时告诉我。以下是我看待构成这种情况的项目链的方式:
- SSL 证书由startssl.com
- URL 归 GoDaddy 所有(不是我选择的)
- CNAME 指向 Microsoft Azure 虚拟机
- 该虚拟机是标准的 Ubuntu 14.04.2 LTS
- Nginx 设置了反向代理,将两个 URL 指向同一服务器上的不同应用程序。
- 该应用程序是一个流星应用程序与 mup 一起部署。
- nginx 'vhost' 设置如下,以便与 Meteor/sockets 配合使用。
我尝试了几种方法来设置 SSL 并对其进行调试:
已知未知数:
- 不知道使用 Microsoft Azure 是否有任何区别,或者是否没有区别,因为无论使用什么 IaaS,运行的都是 ubuntu VM。
- 不知道 https 请求在线路的哪个位置被丢弃(例如,它到达 VM 了吗?它到达上游 nginx 代理服务器了吗?)。http:// url 工作正常,我可以查看上游服务器的日志,但在上游服务器的日志中看不到安全 url 的任何内容。
- 从我的电脑上看
traceroute
,安全和不安全的 URL 似乎都有相同的路径。这在这种情况下意味着什么?
本质上,我正在寻找帮助,以了解如何尝试调试为什么无法以线性方式找到安全 URL。特别是关于第二个未知数,因为我目前不知道连接在哪里丢失/请求目前进入了多远。
谢谢!
答案1
是的,这是一个相当大的问题。从一般意义上讲,您可以像调试其他任何与网络相关的问题一样来调试它:tcpdump
查看数据包是否到达了它们需要到达的地方,以及它们是否包含您期望的内容,然后检查接收数据包的日志以查看它们是如何被处理的。
鉴于错误消息的性质,我怀疑连接正在建立,然后被毫不客气地关闭。作为 HTTP/HTTPS,我倾向于认为是 nginx 配置错误导致端口 443 未使用 SSL。nginx 错误日志将提到类似内容。