Я пытаюсь настроить защищенный сервер веб-сокетов (wss://
), используя acme/autocert
.Программа запускается, но когда я пытаюсь подключиться к ней, я получаю следующую ошибку:
http: TLS handshake error from <IP>: acme/autocert:
unable to authorize "<my domain>"; challenge "tls-alpn-01" failed with error:
acme: authorization error for <my domain>: 403 urn:acme:error:unauthorized:
Cannot negotiate ALPN protocol "acme-tls/1" for tls-alpn-01 challenge
Это код, который я использую для запуска сервера веб-сокетов:
func Run() {
hub = newHub()
go hub.run()
mux := http.NewServeMux()
mux.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) {
serveWs(hub, w, r)
})
certManager := autocert.Manager{
Prompt: autocert.AcceptTOS,
Cache: autocert.DirCache("certs"),
}
server := &http.Server{
Addr: ":8080",
Handler: mux,
TLSConfig: &tls.Config{
GetCertificate: certManager.GetCertificate,
},
}
go server.ListenAndServeTLS("", "")
}
Itдолжен автоматически получить новый сертификат, если в кэше его нет (папка certs
).Сообщение об ошибке говорит мне, что существует проблема при согласовании протокола при создании нового сертификата.Нужно ли где-нибудь добавлять поддерживаемые протоколы?