Php 如何调试SSL https挂起错误连接超时

Php 如何调试SSL https挂起错误连接超时,php,apache,amazon-web-services,ssl,https,Php,Apache,Amazon Web Services,Ssl,Https,虽然我的SSL证书没有过期,并且配置了它的AWS ELB中没有任何更改,但通过HTTPS访问我的站点突然挂起,并在错误连接超时时终止。调试时,我注意到它甚至没有到达PHP脚本 如何调试浏览器、ELB中的证书和服务器之间的路径,以查看其“卡住”的位置 Ubuntu上是否有Apache日志,我可以查看对SSL端口的请求 您可以在apache中启用登录: <IfModule mod_ssl.c> ErrorLog /var/log/apache2/ssl_engine.log

虽然我的SSL证书没有过期,并且配置了它的AWS ELB中没有任何更改,但通过HTTPS访问我的站点突然挂起,并在错误连接超时时终止。调试时,我注意到它甚至没有到达PHP脚本

如何调试浏览器、ELB中的证书和服务器之间的路径,以查看其“卡住”的位置


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

您可以在apache中启用登录:

<IfModule mod_ssl.c>
    ErrorLog /var/log/apache2/ssl_engine.log
    LogLevel debug
</IfModule>
基本TCP连接(与ssl无关)可以使用telnet检查:

  • 第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
    

当运行openssl s_客户端-connect mydomain.com:443时,它只是挂起,没有任何输出。(对stackoverflow运行相同的命令将显示调试信息)。关于请求被卡住的位置,这意味着什么?我猜在这种情况下,添加ErrorLog in.htaccess不会有帮助,对吧?它实际上不会无限期挂起,我最终得到了一个
connect:Operation timed out connect:errno=60
然后
telnet mydomain.com 443
来确认端口已打开,服务器正在侦听它或任何其他嗅探器,以获取数据包级别的详细信息(如果实际发生握手)。
telnet mydomain.com 443也挂起,没有任何输出。关于它被卡住的位置,这意味着什么?关于TCP握手。来自
SYN
-
SYN,ACK
-
ACK
序列的一个数据包没有通过。第二个由服务器返回,因此它可能是防火墙,或者服务器不侦听端口/接口。问题在于传输层,与ssl库/证书无关。
$ telnet stackoverflow.com 443
telnet: could not resolve stackoverflow.com/443: Name or service not known