Scert/backend/internal/domain/challenge.go

31 lines
743 B
Go

package domain
import (
"fmt"
"strings"
)
const (
ChallengeDNS01 = "dns-01"
ChallengeHTTP01 = "http-01"
)
// NormalizeChallengeType 保持历史空值使用 DNS 验证,拒绝未知方式及所有泛域名。
func NormalizeChallengeType(value string, names []string) (string, error) {
value = strings.ToLower(strings.TrimSpace(value))
if value == "" {
value = ChallengeDNS01
}
if value != ChallengeDNS01 && value != ChallengeHTTP01 {
return "", fmt.Errorf("证书验证方式无效:%s", value)
}
if value == ChallengeHTTP01 {
for _, name := range names {
if strings.HasPrefix(strings.TrimSpace(name), "*.") {
return "", fmt.Errorf("HTTP-01 不支持泛域名,请使用 DNS-01")
}
}
}
return value, nil
}