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)
}
}
_
同じエラーが発生しましたが、URLがわかりません。
HTTPSにはhttps://localhost:port
を使用し、WSにはwss://127.0.0.1:port
を使用しました。したがって、https://localhost
およびhttps://127.0.0.1
(Chromeのみ)の証明書を受け入れる必要がありました。
Chromeの最新バージョンは、安全でないとしてSHA-1証明書を拒否します。おそらく、SHA-2証明書に移動する必要があります。
私はこの問題や他の多くの問題に苦労していましたが、キーファイルの間違った場所を一緒に探していることに気付きました!
まず、証明書とキーは両方とも.PEMファイルである必要があります。 Let's Encryptを使用しているため、適切な場所を見つけるのが少し簡単でした(これは/ etc/letsencrypt/live/domainNameでした)。
私と同じようにウィザードを使用してSSL証明書をインストールした場合は、証明書プロバイダーについて少し調査する必要があります。キーがインストールされている場所を調べて、「証明書」と「キー」に適していると思われる.PEMファイルを見つけます。