我正在嘗試使用 stunnel 將 wss 連接轉換為 ws 連接,因為wsServer不支持 wss。服務器運行的是 Ubuntu,而我使用的客戶端是 Chrome,如果重要的話。
這是我的stunnel.conf檔案
foreground = yes
debug = info
output = /var/log/stunnel.log
[wsServer]
cert = /etc/letsencrypt/live/myurl.com/fullchain.pem
key = /etc/letsencrypt/live/myurl.com/privkey.pem
accept = 0.0.0.0:8443
connect = 127.0.0.1:8080
我正在嘗試通過 javascript 呼叫連接到它:
const socket = new WebSocket('wss://myurl.com:8433');
但我一直收到連接錯誤:
(index):13 WebSocket connection to 'wss://myurl.com:8433/' failed: (anonymous) @ (index):13
這是我檢查過的內容:
- 我的埠轉發/系統防火墻沒有吃掉連接。如果我殺死 stunnel 并在埠 8080 或 8433 上設定一個常規套接字偵聽,我可以從客戶端計算機連接到該套接字。
- wsServer 接受未加密的流量,如果我改為連接
ws://myurl.com:8080它可以正常作業 - wsServer 可以很好地接受來自 localhost 的連接,據我所知,當 stunnel 與服務器在同一臺機器上運行時,這是必要的
- Chrome在用于同一域下的https頁面時接受我的證書,所以我認為我沒有證書簽名錯誤,但我不知道如何判斷證書是否與連接失敗有關
- Stunnel 啟動時不列印任何錯誤
/var/log/stunnel.log盡管檔案是在我將輸出欄位添加到 .conf 檔案后創建的,但沒有任何內容被列印到
關于我還能嘗試什么的任何想法?是否有某些原因適用于 https 的證書不適用于 wss?
人們是否建議通過 apache 使用 ProxyPass 并完全避免使用 stunnel?
uj5u.com熱心網友回復:
不是解決方案,而是下一個故障排除步驟。獲取自己的 openssl 并嘗試連接到 8443。這應該會回傳證書資訊并至少確認 stunnel 正在提供證書。
openssl s_client -connect myurl.com:8443
自從我配置 stunnel 以來已經有一段時間了,但是 IIRC 你不能在你的密鑰上輸入密碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/475914.html
