Я хочу настроить TLS с помощью Let's Encrypt в Golang с помощью golang.org/x/crypto/acme/autocert
. Зачем мне устанавливать HostPolicy в Менеджере? Вроде все нормально работает без дефолтного autocert.HostWhitelist
.
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("test"))
})
m := autocert.Manager{
Prompt: autocert.AcceptTOS,
//HostPolicy: autocert.HostWhitelist("example.com"),
Cache: autocert.DirCache("certs"),
}
s := &http.Server{
Addr: ":443",
TLSConfig: &tls.Config{
GetCertificate: m.GetCertificate,
},
}
log.Fatal(s.ListenAndServeTLS("", ""))
Я настраиваю простую CMS и хочу, чтобы SSL был автоматическим для новых хостов. Я мог бы создать свою собственную функцию политики хоста, которая ищет имена хостов в хранилище данных, но было бы неплохо пропустить это.
РЕДАКТИРОВАТЬ
Я нашел это в их коде:
HostPolicy определяет, для каких доменов Manager будет пытаться получить новые сертификаты. Это не влияет на кешированные сертификаты.
Если не равно нулю, перед запросом нового сертификата вызывается HostPolicy. Если ноль, в настоящее время разрешены все хосты. Это не рекомендуется, так как это открывает потенциальную атаку, когда клиенты подключаются к серверу по IP-адресу и делают вид, что запрашивают неверное имя хоста. Диспетчер попытается получить сертификат для этого хоста неправильно, в конечном итоге достигнув предела скорости ЦС для запросов сертификатов и сделав невозможным получение фактических сертификатов.
Я до сих пор не понимаю этого полностью. Что может сделать злоумышленник и как это повлияет на мое приложение?