Есть ли опасность в пропуске HostPolicy в autocert.Manager?

Я хочу настроить 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-адресу и делают вид, что запрашивают неверное имя хоста. Диспетчер попытается получить сертификат для этого хоста неправильно, в конечном итоге достигнув предела скорости ЦС для запросов сертификатов и сделав невозможным получение фактических сертификатов.

Я до сих пор не понимаю этого полностью. Что может сделать злоумышленник и как это повлияет на мое приложение?


person twharmon    schedule 31.12.2017    source источник


Ответы (1)


Если у вас нет HostPolicy, это означает, что любой может сделать запрос к вашему приложению, и в результате ваш сервер попытается создать SSL-сертификат для этого домена.

Затем хакер может сделать несколько запросов к вашему серверу и привести к тому, что вы достигнете предела скорости, поэтому, когда ваша служба фактически делает запрос на продление для реальных доменов, они будут отклонены, потому что вы достигли предела скорости.

Так что в итоге вы не сможете создавать сертификаты, которые вам действительно нужны, а ваши клиенты будут жаловаться, а вы плакать.

person Blankman    schedule 01.09.2018