如何调试 SSL https 挂起ERR_CONNECTION_TIMED_OUT


How to debug a SSL https hang ERR_CONNECTION_TIMED_OUT

尽管我的 SSL 证书没有过期,并且配置了该证书的 AWS ELB 中没有任何更改,但突然间通过 HTTPS 访问我的站点挂起并在ERR_CONNECTION_TIMED_OUT中死亡。调试时,我注意到它甚至没有到达PHP脚本。

如何调试浏览器、ELB 中的证书和服务器之间的路径以查看它"卡住"的位置?

Ubuntu 上有 Apache 的日志,我可以查看对 SSL 端口的请求吗?

您可以在 apache 中启用日志记录:

<IfModule mod_ssl.c>
    ErrorLog /var/log/apache2/ssl_engine.log
    LogLevel debug
</IfModule>

并使用 OpenSSL s_client 从客户端检查 SSL 协商的外观,例如:

openssl s_client -connect stackoverflow.com:443

可以使用telnet检查基本TCP连接(与SSL无关):

  • 第 1-4 层工作良好,已建立连接:

    $ telnet stackoverflow.com 443
    Trying 104.16.35.249...
    Connected to stackoverflow.com.
    Escape character is '^]'.
    
  • 解析主机,但无法握手:

    $ telnet stackoverflow.com 443
    Trying 104.16.37.249...
    
  • 无法解析主机:

    $ telnet stackoverflow.com 443
    telnet: could not resolve stackoverflow.com/443: Name or service not known