1
0
mirror of https://github.com/StackExchange/dnscontrol.git synced 2024-05-11 05:55:12 +00:00

allow ecc certs if desired (#411)

This commit is contained in:
Craig Peterson
2018-10-09 18:51:48 -04:00
committed by GitHub
parent 6764811c5f
commit cf7f199462
3 changed files with 29 additions and 21 deletions

View File

@ -21,6 +21,7 @@ import (
type CertConfig struct {
CertName string `json:"cert_name"`
Names []string `json:"names"`
UseECC bool `json:"use_ecc"`
}
type Client interface {
@ -36,8 +37,8 @@ type certManager struct {
cfg *models.DNSConfig
domains map[string]*models.DomainConfig
originalDomains []*models.DomainConfig
client *acme.Client
account *Account
waitedOnce bool
}
@ -64,13 +65,11 @@ func commonNew(cfg *models.DNSConfig, storage Storage, email string, server stri
domains: map[string]*models.DomainConfig{},
}
client, err := c.createAcmeClient()
acct, err := c.getOrCreateAccount()
if err != nil {
return nil, err
}
client.ExcludeChallenges([]acme.Challenge{acme.HTTP01, acme.TLSALPN01})
client.SetChallengeProvider(acme.DNS01, c)
c.client = client
c.account = acct
return c, nil
}
@ -97,8 +96,10 @@ func (c *certManager) IssueOrRenewCert(cfg *CertConfig, renewUnder int, verbose
return false, err
}
var client *acme.Client
var action = func() (*acme.CertificateResource, error) {
return c.client.ObtainCertificate(cfg.Names, true, nil, true)
return client.ObtainCertificate(cfg.Names, true, nil, true)
}
if existing == nil {
@ -120,11 +121,22 @@ func (c *certManager) IssueOrRenewCert(cfg *CertConfig, renewUnder int, verbose
} else {
log.Println("Renewing cert")
action = func() (*acme.CertificateResource, error) {
return c.client.RenewCertificate(*existing, true, true)
return client.RenewCertificate(*existing, true, true)
}
}
}
kt := acme.RSA2048
if cfg.UseECC {
kt = acme.EC256
}
client, err = acme.NewClient(c.acmeDirectory, c.account, kt)
if err != nil {
return false, err
}
client.ExcludeChallenges([]acme.Challenge{acme.HTTP01, acme.TLSALPN01})
client.SetChallengeProvider(acme.DNS01, c)
acme.PreCheckDNS = c.preCheckDNS
defer func() { acme.PreCheckDNS = acmePreCheck }()