2017-03-09 32 views
14

nie można połączyć się z serwerem websocket ..websocket - Błąd nawiązywania połączenia: net :: ERR_INSECURE_RESPONSE

używam dokładnie to samo private.key i public.crt że używam z nginx

CERT jest podpisany własnym ale działa dobrze z resztą strony internetowej za pośrednictwem protokołu HTTPS przez nginx

serwer websocket działa podczas korzystania ws:// gdy linia z http.ListenAndServe() jest komentarzem

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

Czy możesz udostępnić swoją stronę klienta? – Elad

+0

'new WebSocket ('wss: // domena: 8000 /');' – clarkk

+0

Mam bardzo podobny błąd podczas pobierania tej wiadomości. Mam trzy przeglądarki na moim komputerze i tylko Chrome (57) wyrzuci ten błąd. Nie ma pojęcia dlaczego. –

Odpowiedz

6

Wygląda na to, że najnowsza wersja Chrome odrzuca certyfikaty SHA-1 jako niezabezpieczone. Prawdopodobnie musisz przenieść się do certyfikatów SHA-2.

5

Miałem ten sam błąd, ale nie znam adresów URL.

Użyłem https://localhost:port dla HTTPS i wss://127.0.0.1:port dla WS. Więc musiałem zaakceptować certyfikat dla https://localhost i https://127.0.0.1 (tylko w Chrome).

+0

Czy mógłbyś opracować, jak "zaakceptować certyfikat"? –

+1

Przeglądałem do obu adresów URL i akceptowałem certyfikaty w przeglądarce :) – Appyx

0

Zmagałem się z tym problemem i wieloma innymi, dopóki nie zorientowałem się, że szukam w niewłaściwym miejscu dla wszystkich moich kluczowych plików!

Po pierwsze, oba certyfikaty i klucze muszą być plikami .PEM. Używam Let's Encrypt, więc trochę łatwiej było mi znaleźć właściwe miejsce (które było /etc/letsencrypt/live/domainName).

Jeśli używałeś kreatora do zainstalowania certyfikatu SSL tak jak ja, musisz przeprowadzić trochę badań u dostawcy certyfikatu. Po prostu sprawdź, gdzie są zainstalowane twoje klucze i znajdź pliki .PEM, które wydają się odpowiednie dla "cert" i "key".