2017-03-09 93 views
14

无法连接到服务器的WebSocket ..的WebSocket - 错误的连接建立:网:: ERR_INSECURE_RESPONSE

我使用完全相同的private.keypublic.crt,我与nginx

的证书使用是自签名但通过nginx的

使用ws://时,当http.ListenAndServe()该行注释掉WebSocket的服务器工作通过HTTPS正常工作与网站的其余

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) 
    } 
} 
+0

你能分享你的客户端吗? – Elad

+0

'新的WebSocket('wss:// domain:8000 /');' – clarkk

+0

我有一个非常类似的错误获取此消息。我的电脑上有三个浏览器,只有Chrome(57)会抛出此错误。不知道为什么。 –

回答

6

它看起来像最新版本的Chrome现在拒绝SHA-1证书是不安全的。您可能需要转移到SHA-2证书。

5

我有同样的错误,但我不知道你的网址。

我对HTTPS使用https://localhost:port,对WS使用wss://127.0.0.1:port。 所以我不得不接受https://localhosthttps://127.0.0.1的证书(仅在Chrome中)。

+0

您能否详细说明如何“接受证书”? –

+1

我浏览了BOTH网址并在浏览器中接受了证书:) – Appyx

0

我一直在为这个问题和其他许多人苦苦挣扎,直到我意识到我一直在寻找我的密钥文件在一起的错误地方!

首先,证书和密钥都需要是.PEM文件。我使用Let's Encrypt,因此我找到合适的地方(这是/etc/letsencrypt/live/domainName)更容易一些。

如果您像我一样使用向导来安装SSL证书,那么您需要对证书提供者进行一些研究。只需查看您的密钥安装位置,然后找到似乎适用于“证书”和“密钥”的.PEM文件。

相关问题