web-dev-qa-db-ja.com

websocket-接続確立のエラー:net :: ERR_INSECURE_RESPONSE

Websocketサーバーに接続できません。

nginxで使用するものとまったく同じ_private.key_および_public.crt_を使用します

証明書は自己署名されていますが、nginxを介してHTTPS経由でWebサイトの残りの部分で正常に動作します

http.ListenAndServe()の行がコメント解除されている場合、_ws://_を使用すると、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)
    }
}
_
17
clarkk

同じエラーが発生しましたが、URLがわかりません。

HTTPSにはhttps://localhost:portを使用し、WSにはwss://127.0.0.1:portを使用しました。したがって、https://localhostおよびhttps://127.0.0.1(Chromeのみ)の証明書を受け入れる必要がありました。

8
Appyx

Chromeの最新バージョンは、安全でないとしてSHA-1証明書を拒否します。おそらく、SHA-2証明書に移動する必要があります。

6
teriyaki

私はこの問題や他の多くの問題に苦労していましたが、キーファイルの間違った場所を一緒に探していることに気付きました!

まず、証明書とキーは両方とも.PEMファイルである必要があります。 Let's Encryptを使用しているため、適切な場所を見つけるのが少し簡単でした(これは/ etc/letsencrypt/live/domainNameでした)。

私と同じようにウィザードを使用してSSL証明書をインストールした場合は、証明書プロバイダーについて少し調査する必要があります。キーがインストールされている場所を調べて、「証明書」と「キー」に適していると思われる.PEMファイルを見つけます。

0
hueyfreeman