2017-03-09 35 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文件。

相關問題