Мы используем веб-сервер в Docker-контейнере. На данный момент наш открытый закрытый ключ работает нормально. У нас проблема в том, что наш CAFile не включается в качестве предлагаемого сертификата, когда мы тестируем наш сайт с https://www.ssllabs.com/.. После проверки решений я попытался добавить сертификат в caCertPool и добавил его в конфигурацию. Даже после этого SSL Labs по-прежнему заявляет, что не видит его, и мы все равно получаем B Score. Вот фрагмент кода того, что я пока безуспешно пытаюсь сделать.
certs, err := newStaticCerts(&static.Config{UseStaticFiles: cfg.IsProduction, FallbackToDisk: true, AbsPkgPath: getMessagePath()})
if err != nil {
log.WithFields(log.F("error", err)).Fatal("Issue initializing static certs")
}
httpKey, err := certs.ReadFile("/certs/website.com.key")
if err != nil {
log.WithFields(log.F("error", err)).Fatal("Issue loading tls key")
}
httpPem, err := certs.ReadFile("/certs/website.com.pem")
if err != nil {
log.WithFields(log.F("error", err)).Fatal("Issue loading tls pem")
}
caFilePem, err := certs.ReadFile("/certs/CAFile.pem")
if log.CheckErr(err, "Issue loading CAFile pem") {
return
}
// Load client cert
cert, err := tls.X509KeyPair(httpPem, httpKey)
if err != nil {
log.Fatal(err)
}
caCertPool := x509.NewCertPool()
caCertPool.AppendCertsFromPEM(caFilePem)
tlsConfig := &tls.Config{
MinVersion: tls.VersionTLS12,
CurvePreferences: []tls.CurveID{tls.CurveP521, tls.CurveP384, tls.CurveP256},
PreferServerCipherSuites: true,
CipherSuites: []uint16{
tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
tls.TLS_RSA_WITH_AES_256_GCM_SHA384,
tls.TLS_RSA_WITH_AES_256_CBC_SHA,
},
Certificates: []tls.Certificate{cert},
RootCAs: caCertPool,
}
tlsConfig.BuildNameToCertificate()
//server := &http.Server{Addr: ":" + strconv.Itoa(cfg.AppPort), Handler: p.Serve(), TLSConfig: tlsConfig}
srv := &http.Server{
Addr: ":" + strconv.Itoa(cfg.AppPort),
Handler: p.Serve(),
TLSConfig: tlsConfig,
TLSNextProto: make(map[string]func(*http.Server, *tls.Conn, http.Handler), 0),
}
err = kmshttp.RunServer(srv)
if log.CheckErr(err, "shutting down server") {
return
}
Проблема в том, что когда мы проверяем наши пути сертификации, наш центр сертификации RSA
является дополнительной загрузкой и не включена в наш сайт.