Websocket - Ошибка при установлении соединения: net:: ERR_INSECURE_RESPONSE

Невозможно подключиться к серверу websocket.

Я использую те же самые private.key и public.crt, которые я использую с nginx

Сертификат является самозаверяющим, но отлично работает с остальной частью сайта через HTTPS через nginx

Сервер websocket работает при использовании ws://, когда строка с http.ListenAndServe() раскоментирована

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

Ответы

Ответ 1

Похоже, что новейшая версия Chrome теперь отвергает сертификаты SHA-1 как небезопасные. Вероятно, вам нужно перейти на сертификаты SHA-2.

Ответ 2

У меня была такая же ошибка, но я не знаю ваших URL.

Я использовал https://localhost:port для HTTPS и wss://127.0.0.1:port для WS. Поэтому я должен был принять сертификат для https://localhost и https://127.0.0.1 (только в Chrome).

Ответ 3

Я боролся с этой проблемой и многими другими, пока не понял, что искал все мои ключевые файлы не в том месте!

Во-первых, cert и ключ должны быть .PEM файлами. Я использую Let Encrypt, поэтому мне было легче найти нужное место (которое было /etc/letencrypt/live/domainName ).

Если вы использовали мастер для установки своего SSL-сертификата, как и я, вам нужно провести небольшое исследование поставщика сертификатов. Просто найдите, где ваши ключи установлены ими, и найдите файлы .PEM, которые кажутся подходящими для "cert" и "key".