Использование * (звездочки) в качестве подстановочного знака не работает:
app.Run(iris.AutoTLS(":443", "*.example.com", "mail@example.com"))
Дело о вводе поддоменов, руководство работает:
app.Run(iris.AutoTLS(":443", "sub1.example.com sub2.example.com sub3.example.com", "mail@example.com"))
Существует множество поддоменов, которые не должны контролироваться вручную.
Также, если поместить каждый поддомен в список, он будет огромным и не будет работать с учетом ограничений letsencrypt.
Придерживался этого примера для метода подстановочных субдоменов:
https://github.com/kataras/iris/blob/master/_examples/subdomains/wildcard/main.go
Если субдомены удалены и если на хосте есть файл сертификата, субдомен будет работать, хотя его нет в списке белого списка.
app.Run(iris.AutoTLS(":443", "sub3.example.com", "mail@example.com"))
Таким образом, я предполагаю, что функция autocert должна выполняться для каждого субдомена при посещении.
func dynamicSubdomainHandler(ctx iris.Context) {
username := ctx.Subdomain()
ctx.Writef("Hello from dynamic subdomain path: %s, here you can handle the route for dynamic subdomains, handle the user: %s", ctx.Path(), username)
XXX autocert( "username.example.com", "mail@example.com")) XXX
}
EDIT:
Ограничения letsencrypt - 20 сертификатов на зарегистрированный домен в неделю, но это позволяет объединить до 100 имен в один сертификат.
Итак, идея, описанная выше, не является правильным решением, так как это должна быть новая функция со счетчиком. Затем эта функция должна заполнить один сертификат субдоменами до 100 и запросить новый сертификат, который будет подан до 100 и так далее. Таким образом, мы можем получить 2000 поддоменов в неделю, 100 имен по 20 сертификатов в неделю.
Это должно быть реализовано в Iris, так как есть субдомены AutoTLS и Wildcard, но они не работают вместе. Подстановочные знаки не являются подстановочными, если вам нужно установить значение где-либо.