websocket - 连接建立错误:net::ERR_INSECURE_RESPONSE
Posted
技术标签:
【中文标题】websocket - 连接建立错误:net::ERR_INSECURE_RESPONSE【英文标题】:websocket - Error in connection establishment: net::ERR_INSECURE_RESPONSE 【发布时间】:2017-03-09 15:20:26 【问题描述】:无法连接到 websocket 服务器..
我使用与nginx
完全相同的private.key
和public.crt
证书是自签名的,但可以通过 nginx 通过 HTTPS 与网站的其余部分正常工作
当http.ListenAndServe()
的行被取消注释时,websocket服务器在使用ws://
时工作
package main
import (
"flag"
"fmt"
"log"
"net/http"
)
const PORT uint = 8000
func main()
host := parse_flags()
hub := newHub()
go hub.run()
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request)
serve(hub, w, r)
)
server_host := fmt.Sprintf("%s:%d", host, PORT)
log.Println("Server listening on:", server_host)
err := http.ListenAndServeTLS(server_host, fmt.Sprintf("/var/ini/ssl/%s/public.crt", host), fmt.Sprintf("/var/ini/ssl/%s/private.key", host), nil)
//err := http.ListenAndServe(server_host, nil)
if err != nil
log.Fatal("ListenAndServe:", err)
【问题讨论】:
你能分享你的客户端吗?new WebSocket('wss://domain:8000/');
收到此消息时,我遇到了非常相似的错误。我的电脑上有三个浏览器,只有 Chrome (57) 会抛出这个错误。不知道为什么。
【参考方案1】:
我有同样的错误,但我不知道你的网址。
我将https://localhost:port
用于HTTPS,将wss://127.0.0.1:port
用于WS。
所以我不得不接受 https://localhost
和 https://127.0.0.1
的证书(仅在 Chrome 中)。
【讨论】:
我浏览了两个网址并接受了浏览器中的证书:) 谢谢,我必须导航到https://localhost:8080/
接受开发证书【参考方案2】:
看起来最新版本的 Chrome 现在拒绝 SHA-1 证书,因为它不安全。您可能需要迁移到 SHA-2 证书。
【讨论】:
【参考方案3】:我一直在为这个问题和许多其他问题苦苦挣扎,直到我意识到我在错误的地方寻找我的关键文件!
首先,证书和密钥都需要是 .PEM 文件。我正在使用 Let's Encrypt,因此我更容易找到正确的位置(即 /etc/letsencrypt/live/domainName)。
如果您像我一样使用向导安装 SSL 证书,那么您需要对证书提供者进行一些研究。只需查看他们将密钥安装在哪里,然后找到似乎适合“证书”和“密钥”的 .PEM 文件。
【讨论】:
以上是关于websocket - 连接建立错误:net::ERR_INSECURE_RESPONSE的主要内容,如果未能解决你的问题,请参考以下文章
ws 如何捕获:到 'ws:// 的 WebSocket 连接失败:连接建立错误:net::ERR_CONNECTION_REFUSED
websocket - 连接建立错误:net::ERR_INSECURE_RESPONSE
当我在 Open*** 后面时,浏览器在建立 WebSocket 连接一秒后关闭并显示错误 1006
Laravel Websockets - 错误:失败:连接建立错误:net::ERR_SSL_VERSION_OR_CIPHER_MISMATCH