websocket - 连接建立错误:net :: ERR_INSECURE_RESPONSE

时间:2017-03-09 15:20:26

标签: ssl go websocket

无法连接到websocket服务器..

我使用与private.key一起使用的完全相同的public.crtnginx

证书是自签名的,但通过nginx

通过HTTPS在网站的其余部分正常工作

当取消注释ws://的行时,使用http.ListenAndServe()时,websocket服务器正常工作

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

3 个答案:

答案 0 :(得分:7)

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

我使用https://localhost:port表示HTTPS,使用wss://127.0.0.1:port表示WS。 所以我必须接受https://localhosthttps://127.0.0.1的证书(仅限Chrome)。

答案 1 :(得分:6)

看起来最新版本的Chrome现在拒绝将SHA-1证书视为不安全。您可能需要转向SHA-2证书。

答案 2 :(得分:0)

我一直在努力解决这个问题以及其他许多问题,直到我意识到我在错误的位置找到了我的密钥文件!

首先,证书和密钥都需要是.PEM文件。我正在使用Let的加密功能,因此我找到合适的位置( / etc / letsencrypt / live / domainName )会更容易。

如果您使用向导像我一样安装SSL证书,那么您需要对证书提供商进行一些研究。只需查看他们安装密钥的位置,找到适合" cert"的.PEM文件。和"关键"。