2017-03-31 79 views
0

我有一個Qt應用程序,它以安全模式(SSL)運行帶有來自Letsencrypt的證書的QWebSocketServer。當我從Windows 10計算機上的Chrome或Edge進行連接時,一切正常。QWebSocketServer將不接受來自Windows的SSL連接Firefox

我使用這個工具來進行測試:https://www.websocket.org/echo.html

但是,當我在Windows 10,但是從Firefox連接不起作用,它運行在Linux上的Firefox在VMware的同一連接時不工作機。當它不起作用時,我的意思是沒有調用QWebSocketServer的回調函數:newConnection,acceptError,peerVerifyError,sslErrors或serverError(我實現了所有這些回調以嘗試調試它)。此外,在WebSocket的一面,我得到一些錯誤信息,幾秒鐘後:

ERROR: undefined 
DISCONNECTED 

我也試圖從我的Windows 10機器從不同的網絡位置連接。它的工作!但只有一段時間。經過多次審判之後,它多次和系統地失敗。

此外,我嘗試從一個不同的Windows 10機器,它的工作。但是,再次,只有少數審判和事後失敗,反覆和系統。

我嘗試沒有成功如下:

  • 明確Firefox的緩存。
  • 卸載並重新安裝Firefox(我正在使用版本52)。
  • 運行Firefox Developer Edition。
  • 從其他用戶帳戶運行Firefox。
  • 重新啓動服務器計算機(Ubuntu 16.04)。
  • 重新啓動客戶機(Windows 10)。

當我刪除我的QWebSocketServer中的安全模式時,一切都適用於非安全的WebSockets。

在服務器機器上,tcptrack顯示Firefox連接爲「ESTABLISHED」,但QWebSocketServer顯然沒有收到任何東西(沒有回調方法被調用)。

看來QWebSocketServer正在接收連接請求,但未能回答並調用任何錯誤回調方法(通過Qt信號)。

我想盡辦法瞭解問題所在。

接下來我可以嘗試什麼?

+0

爲了進一步調查,我編譯了http://doc.qt.io/qt-5/qtwebsockets-sslechoserver-example.html,並用證書替換了證書和私鑰文件。相同的結果:從Chrome/Edge,而不是Firefox/Windows 10的作品。所以罪魁禍首不是我的應用程序。 –

+0

我也在我的服務器機器上運行了帶有python和龍捲風的SSL websocket服務器(具有相同的證書和私鑰)。它可以在Firefox/Windows 10上運行,但不是Qt WebSocket SSL回顯服務器的例子。所以,它似乎是罪魁禍首... –

+0

我在Ubuntu Linux 16上使用Qt 5.8.0。04(64位),剛剛發現了一個可能解決問題的錯誤報告:https://bugreports.qt.io/browse/QTBUG-57665 –

回答

0

回答我自己的問題:這個問題確實是Qt 5.8.0中的一個錯誤,如下所示:bugreports.qt.io/browse/QTBUG-57665。在討論這個錯誤報告中提出的修正實際上解決了這個問題。