Skip to content

Commit

Permalink
acme: prevent some malformed errors.
Browse files Browse the repository at this point in the history
  • Loading branch information
ldez authored and traefiker committed Oct 11, 2018
1 parent e8e9dd9 commit 1b54f4d
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 7 deletions.
17 changes: 13 additions & 4 deletions acme/acme.go
Expand Up @@ -692,16 +692,25 @@ func searchUncheckedDomains(domains []string, certs map[string]*tls.Certificate)
}

func (a *ACME) getDomainsCertificates(domains []string) (*Certificate, error) {
domains = fun.Map(types.CanonicalDomain, domains).([]string)
log.Debugf("Loading ACME certificates %s...", domains)
var cleanDomains []string
for _, domain := range domains {
canonicalDomain := types.CanonicalDomain(domain)
cleanDomain := acme.UnFqdn(canonicalDomain)
if canonicalDomain != cleanDomain {
log.Warnf("FQDN detected, please remove the trailing dot: %s", canonicalDomain)
}
cleanDomains = append(cleanDomains, cleanDomain)
}

log.Debugf("Loading ACME certificates %s...", cleanDomains)
bundle := true

certificate, err := a.client.ObtainCertificate(domains, bundle, nil, OSCPMustStaple)
certificate, err := a.client.ObtainCertificate(cleanDomains, bundle, nil, OSCPMustStaple)
if err != nil {
return nil, fmt.Errorf("cannot obtain certificates: %+v", err)
}

log.Debugf("Loaded ACME certificates %s", domains)
log.Debugf("Loaded ACME certificates %s", cleanDomains)
return &Certificate{
Domain: certificate.Domain,
CertURL: certificate.CertURL,
Expand Down
12 changes: 12 additions & 0 deletions configuration/configuration.go
Expand Up @@ -34,6 +34,7 @@ import (
"github.com/containous/traefik/tls"
"github.com/containous/traefik/types"
"github.com/pkg/errors"
lego "github.com/xenolf/lego/acme"
)

const (
Expand Down Expand Up @@ -402,6 +403,17 @@ func (gc *GlobalConfiguration) initACMEProvider() {
gc.ACME.HTTPChallenge = nil
}

for _, domain := range gc.ACME.Domains {
if domain.Main != lego.UnFqdn(domain.Main) {
log.Warnf("FQDN detected, please remove the trailing dot: %s", domain.Main)
}
for _, san := range domain.SANs {
if san != lego.UnFqdn(san) {
log.Warnf("FQDN detected, please remove the trailing dot: %s", san)
}
}
}

// TODO: to remove in the future
if len(gc.ACME.StorageFile) > 0 && len(gc.ACME.Storage) == 0 {
log.Warn("ACME.StorageFile is deprecated, use ACME.Storage instead")
Expand Down
14 changes: 11 additions & 3 deletions provider/acme/provider.go
Expand Up @@ -12,7 +12,6 @@ import (
"sync"
"time"

"github.com/BurntSushi/ty/fun"
"github.com/cenk/backoff"
"github.com/containous/flaeg"
"github.com/containous/traefik/log"
Expand Down Expand Up @@ -762,8 +761,17 @@ func (p *Provider) getValidDomains(domain types.Domain, wildcardAllowed bool) ([
}
}

domains = fun.Map(types.CanonicalDomain, domains).([]string)
return domains, nil
var cleanDomains []string
for _, domain := range domains {
canonicalDomain := types.CanonicalDomain(domain)
cleanDomain := acme.UnFqdn(canonicalDomain)
if canonicalDomain != cleanDomain {
log.Warnf("FQDN detected, please remove the trailing dot: %s", canonicalDomain)
}
cleanDomains = append(cleanDomains, cleanDomain)
}

return cleanDomains, nil
}

func isDomainAlreadyChecked(domainToCheck string, existentDomains []string) bool {
Expand Down

0 comments on commit 1b54f4d

Please sign in to comment.