无法连接到websocket服务器..
我使用与private.key
一起使用的完全相同的public.crt
和nginx
证书是自签名的,但通过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)
}
}
答案 0 :(得分:7)
我有同样的错误,但我不知道你的网址。
我使用https://localhost:port
表示HTTPS,使用wss://127.0.0.1:port
表示WS。
所以我必须接受https://localhost
和https://127.0.0.1
的证书(仅限Chrome)。
答案 1 :(得分:6)
看起来最新版本的Chrome现在拒绝将SHA-1证书视为不安全。您可能需要转向SHA-2证书。
答案 2 :(得分:0)
我一直在努力解决这个问题以及其他许多问题,直到我意识到我在错误的位置找到了我的密钥文件!
首先,证书和密钥都需要是.PEM文件。我正在使用Let的加密功能,因此我找到合适的位置( / etc / letsencrypt / live / domainName )会更容易。
如果您使用向导像我一样安装SSL证书,那么您需要对证书提供商进行一些研究。只需查看他们安装密钥的位置,找到适合" cert"的.PEM文件。和"关键"。