2016-04-28 112 views
1

儘管我的SSL證書沒有過期,並且在配置了AWS ELB的情況下沒有任何更改,但突然通過HTTPS訪問我的網站時掛起並死於ERR_CONNECTION_TIMED_OUT。調試時,我發現它甚至沒有達到PHP腳本。如何調試SSL https掛起ERR_CONNECTION_TIMED_OUT

如何調試瀏覽器,ELB中的證書和我的服務器之間的路徑以查看其「卡住」的位置?

在Ubuntu上是否有Apache的日誌,我可以查看對SSL端口的請求?

回答

2

您可以在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 

基本的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 
    
+0

在運行時的OpenSSL的s_client.First -connect mydomain.com:443它只是掛起沒有任何輸出。 (運行相同的stackoverflow顯示調試信息)。這是什麼意思關於請求卡住的地方?我猜在這種情況下在.htaccess中添加ErrorLog將無濟於事,對吧? – Noam

+0

它實際上不會無限期掛起,我終於得到一個'連接:操作超時 連接:errno = 60' – Noam

+0

然後'telnet mydomain.com 443'確認端口是開放的,服務器監聽它。 [tcpdump](http://www.tcpdump.org/tcpdump_man.html)/ [wireshark](https://www.wireshark.org/)或任何其他嗅探器獲取有關數據包級別的詳細信息,如果握手實際發生。 –