diff --git a/internal/applicant/acme_ca.go b/internal/applicant/acme_ca.go index ea0c6b74..03d9dd65 100644 --- a/internal/applicant/acme_ca.go +++ b/internal/applicant/acme_ca.go @@ -19,6 +19,8 @@ var sslProviderUrls = map[string]string{ sslProviderBuypass: "https://api.buypass.com/acme/directory", sslProviderGoogleTrustServices: "https://dv.acme-v02.api.pki.goog/directory", sslProviderSSLCom: "https://acme.ssl.com/sslcom-dv-rsa", + sslProviderSSLCom + "RSA": "https://acme.ssl.com/sslcom-dv-rsa", + sslProviderSSLCom + "ECC": "https://acme.ssl.com/sslcom-dv-ecc", sslProviderZeroSSL: "https://acme.zerossl.com/v2/DV90", } diff --git a/internal/applicant/applicant.go b/internal/applicant/applicant.go index 52e43991..93ab30ae 100644 --- a/internal/applicant/applicant.go +++ b/internal/applicant/applicant.go @@ -153,8 +153,15 @@ func apply(challengeProvider challenge.Provider, options *applicantOptions) (*Ap // Create an ACME client config config := lego.NewConfig(user) - config.CADirURL = sslProviderUrls[user.CA] config.Certificate.KeyType = parseKeyAlgorithm(domain.CertificateKeyAlgorithmType(options.KeyAlgorithm)) + config.CADirURL = sslProviderUrls[user.CA] + if user.CA == sslProviderSSLCom { + if strings.HasPrefix(options.KeyAlgorithm, "RSA") { + config.CADirURL = sslProviderUrls[sslProviderSSLCom+"RSA"] + } else if strings.HasPrefix(options.KeyAlgorithm, "EC") { + config.CADirURL = sslProviderUrls[sslProviderSSLCom+"ECC"] + } + } // Create an ACME client client, err := lego.NewClient(config) @@ -217,6 +224,8 @@ func parseKeyAlgorithm(algo domain.CertificateKeyAlgorithmType) certcrypto.KeyTy return certcrypto.EC256 case domain.CertificateKeyAlgorithmTypeEC384: return certcrypto.EC384 + case domain.CertificateKeyAlgorithmTypeEC512: + return certcrypto.KeyType("P512") } return certcrypto.RSA2048