Я купил сертификат SSL у Godaddy для веб-сайта.Я добавил файлы на сервер и запустил службу, и она просто возвращает ошибку:
не удалось найти данные PEM при вводе сертификата
Я использовал cat для генерациифайл server.pem со всеми файлами, даже добавил промежуточный pem-файл godaddy pem, который они предоставляют для цепочки сертификатов G2, и ничего.
cat generated-private-key.txt > server.pem
cat 678f65b8a7391017.crt >> server.pem
cat gd_bundle-g2-g1.crt >> server.pem
cat gdig2.crt.pem >> server.pem
Использование самозаверяющего сертификата работает, но, конечно, его нельзя использовать в реальномworld.
Попытка кода 1:
log.Fatal(http.ListenAndServeTLS(fmt.Sprintf("%s:%d", configuration.HttpServer.Address, configuration.HttpServer.Port), "server.pem", "generated-private-key.txt", router))
Попытка кода 2:
cert, err := tls.LoadX509KeyPair("server.pem","generated-private-key.txt")
if err != nil {
log.Fatalf("server: loadkeys: %s", err)
}
pem, err := ioutil.ReadFile("gd_bundle-g2-g1.crt")
if err != nil {
log.Fatalf("Failed to read client certificate authority: %v", err)
}
certpool := x509.NewCertPool()
if !certpool.AppendCertsFromPEM(pem) {
log.Fatalf("Can't parse client certificate authority")
}
tlsConfig := &tls.Config{
ClientCAs: certpool,
Certificates: []tls.Certificate{cert},
}
srv := &http.Server{
Addr: fmt.Sprintf("%s:%d", configuration.HttpServer.Address, configuration.HttpServer.Port),
Handler: router,
ReadTimeout: time.Duration(5) * time.Second,
WriteTimeout: time.Duration(5) * time.Second,
TLSConfig: tlsConfig,
}
log.Fatal(srv.ListenAndServeTLS("678f65b8a7391017.crt","generated-private-key.txt"))
Оба выдают одну и ту же ошибку.
Мне нужно иметьэто все работает, поскольку у меня уже есть готовый сервер, но сейчас я просто хочу включить HTTPS для продуктивной среды.