From 64dbdeb7576d4726fb61f3ca33e22ced554fec1d Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Fri, 26 Jun 2026 14:56:46 +0800 Subject: [PATCH] refactor: clean code --- internal/certacme/certifiers/sp_azure_dns.go | 2 +- .../certacme/certifiers/sp_googlecloud_dns.go | 2 +- .../{azure-dns/azure_dns.go => azure/azure.go} | 2 +- .../googlecloud.go} | 2 +- pkg/core/certmgr/providers/1panel/1panel.go | 4 ++-- .../certmgr/providers/aliyun-slb/aliyun_slb.go | 10 ++++++---- pkg/core/certmgr/providers/aws-acm/aws_acm.go | 13 ++++++------- .../providers/azure-keyvault/azure_keyvault.go | 7 +++---- .../providers/baiducloud-cert/baiducloud_cert.go | 10 +++++----- .../providers/byteplus-cdn/byteplus_cdn.go | 15 +++++++-------- .../providers/cmcccloud-vlb/cmcccloud_vlb.go | 2 +- .../providers/ctcccloud-cms/ctcccloud_cms.go | 8 ++++---- .../providers/ctcccloud-elb/ctcccloud_elb.go | 2 +- .../digitalocean_certificate.go | 4 ++-- .../certmgr/providers/jdcloud-ssl/jdcloud_ssl.go | 2 +- pkg/core/certmgr/providers/ksyun-kcm/ksyun_kcm.go | 8 ++++---- pkg/core/certmgr/providers/ksyun-slb/ksyun_slb.go | 4 ++-- .../providers/qiniu-sslcert/qiniu_sslcert.go | 3 +-- .../rainyun-sslcenter/rainyun_sslcenter.go | 4 ++-- .../certmgr/providers/ucloud-ussl/ucloud_ussl.go | 12 +++++++----- .../providers/volcengine-cdn/volcengine_cdn.go | 15 +++++++-------- .../wangsu-certificate/wangsu_certificate.go | 4 ++-- .../providers/zenlayer-cdn/zenlayer_cdn.go | 9 ++++----- .../certmgr/providers/zenlayer-ga/zenlayer_ga.go | 9 ++++----- pkg/core/deployer/providers/flexcdn/flexcdn.go | 2 +- pkg/core/deployer/providers/goedge/goedge.go | 2 +- pkg/core/deployer/providers/lecdn/lecdn.go | 4 ++-- 27 files changed, 79 insertions(+), 82 deletions(-) rename pkg/core/certifier/challengers/dns01/{azure-dns/azure_dns.go => azure/azure.go} (99%) rename pkg/core/certifier/challengers/dns01/{googlecloud-dns/googlecloud_dns.go => googlecloud/googlecloud.go} (98%) diff --git a/internal/certacme/certifiers/sp_azure_dns.go b/internal/certacme/certifiers/sp_azure_dns.go index 4c5d30ed..5a66c33d 100644 --- a/internal/certacme/certifiers/sp_azure_dns.go +++ b/internal/certacme/certifiers/sp_azure_dns.go @@ -5,7 +5,7 @@ import ( "github.com/certimate-go/certimate/internal/domain" "github.com/certimate-go/certimate/pkg/core" - chlgimpl "github.com/certimate-go/certimate/pkg/core/certifier/challengers/dns01/azure-dns" + chlgimpl "github.com/certimate-go/certimate/pkg/core/certifier/challengers/dns01/azure" xmaps "github.com/certimate-go/certimate/pkg/utils/maps" ) diff --git a/internal/certacme/certifiers/sp_googlecloud_dns.go b/internal/certacme/certifiers/sp_googlecloud_dns.go index 15ee9756..ff73fa08 100644 --- a/internal/certacme/certifiers/sp_googlecloud_dns.go +++ b/internal/certacme/certifiers/sp_googlecloud_dns.go @@ -5,7 +5,7 @@ import ( "github.com/certimate-go/certimate/internal/domain" "github.com/certimate-go/certimate/pkg/core" - chlgimpl "github.com/certimate-go/certimate/pkg/core/certifier/challengers/dns01/googlecloud-dns" + chlgimpl "github.com/certimate-go/certimate/pkg/core/certifier/challengers/dns01/googlecloud" xmaps "github.com/certimate-go/certimate/pkg/utils/maps" ) diff --git a/pkg/core/certifier/challengers/dns01/azure-dns/azure_dns.go b/pkg/core/certifier/challengers/dns01/azure/azure.go similarity index 99% rename from pkg/core/certifier/challengers/dns01/azure-dns/azure_dns.go rename to pkg/core/certifier/challengers/dns01/azure/azure.go index bfae496d..f088f802 100644 --- a/pkg/core/certifier/challengers/dns01/azure-dns/azure_dns.go +++ b/pkg/core/certifier/challengers/dns01/azure/azure.go @@ -1,4 +1,4 @@ -package azuredns +package azure import ( "fmt" diff --git a/pkg/core/certifier/challengers/dns01/googlecloud-dns/googlecloud_dns.go b/pkg/core/certifier/challengers/dns01/googlecloud/googlecloud.go similarity index 98% rename from pkg/core/certifier/challengers/dns01/googlecloud-dns/googlecloud_dns.go rename to pkg/core/certifier/challengers/dns01/googlecloud/googlecloud.go index 8f6af33d..f2b230f0 100644 --- a/pkg/core/certifier/challengers/dns01/googlecloud-dns/googlecloud_dns.go +++ b/pkg/core/certifier/challengers/dns01/googlecloud/googlecloud.go @@ -1,4 +1,4 @@ -package googleclouddns +package googlecloud import ( "context" diff --git a/pkg/core/certmgr/providers/1panel/1panel.go b/pkg/core/certmgr/providers/1panel/1panel.go index 136c7b09..fae449ed 100644 --- a/pkg/core/certmgr/providers/1panel/1panel.go +++ b/pkg/core/certmgr/providers/1panel/1panel.go @@ -138,7 +138,7 @@ func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, pri websiteSSLUploadReq := &onepanelsdk.WebsiteSSLUploadRequest{ SSLID: sslId, Type: "paste", - Description: "upload from certimate", + Description: "upload from Certimate", Certificate: certPEM, PrivateKey: privkeyPEM, } @@ -155,7 +155,7 @@ func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, pri websiteSSLUploadReq := &onepanelsdk2.WebsiteSSLUploadRequest{ SSLID: sslId, Type: "paste", - Description: "upload from certimate", + Description: "upload from Certimate", Certificate: certPEM, PrivateKey: privkeyPEM, } diff --git a/pkg/core/certmgr/providers/aliyun-slb/aliyun_slb.go b/pkg/core/certmgr/providers/aliyun-slb/aliyun_slb.go index 8f44c4c3..95850bfe 100644 --- a/pkg/core/certmgr/providers/aliyun-slb/aliyun_slb.go +++ b/pkg/core/certmgr/providers/aliyun-slb/aliyun_slb.go @@ -92,10 +92,10 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo } if describeServerCertificatesResp.Body.ServerCertificates != nil && describeServerCertificatesResp.Body.ServerCertificates.ServerCertificate != nil { - fingerprintSha256 := sha256.Sum256(certX509.Raw) - fingerprintSha256Hex := hex.EncodeToString(fingerprintSha256[:]) fingerprintSha1 := sha1.Sum(certX509.Raw) fingerprintSha1Hex := hex.EncodeToString(fingerprintSha1[:]) + fingerprintSha256 := sha256.Sum256(certX509.Raw) + fingerprintSha256Hex := hex.EncodeToString(fingerprintSha256[:]) for _, certItem := range describeServerCertificatesResp.Body.ServerCertificates.ServerCertificate { if tea.Int32Value(certItem.IsAliCloudCertificate) != 0 { continue @@ -106,9 +106,11 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo continue } - // 对比证书 SHA-1 或 SHA-256 摘要 + // 对比证书指纹 + // + // 注意,虽然文档中描述为 SHA-256 摘要,但示例给出的是 SHA-1 摘要,因此这里都尝试对比一下 oldFingerprint := strings.ReplaceAll(tea.StringValue(certItem.Fingerprint), ":", "") - if !strings.EqualFold(fingerprintSha256Hex, oldFingerprint) && !strings.EqualFold(fingerprintSha1Hex, oldFingerprint) { + if !strings.EqualFold(fingerprintSha1Hex, oldFingerprint) && !strings.EqualFold(fingerprintSha256Hex, oldFingerprint) { continue } diff --git a/pkg/core/certmgr/providers/aws-acm/aws_acm.go b/pkg/core/certmgr/providers/aws-acm/aws_acm.go index 8473adc9..b2078600 100644 --- a/pkg/core/certmgr/providers/aws-acm/aws_acm.go +++ b/pkg/core/certmgr/providers/aws-acm/aws_acm.go @@ -98,16 +98,15 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo } for _, certItem := range listCertificatesResp.CertificateSummaryList { - // 对比证书有效期 - if certItem.NotBefore == nil || !certItem.NotBefore.Equal(certX509.NotBefore) { - continue - } - if certItem.NotAfter == nil || !certItem.NotAfter.Equal(certX509.NotAfter) { + // 对比证书备用名称 + if !strings.EqualFold(strings.Join(certX509.DNSNames, ","), strings.Join(certItem.SubjectAlternativeNameSummaries, ",")) { continue } - // 对比证书多域名 - if !strings.EqualFold(strings.Join(certX509.DNSNames, ","), strings.Join(certItem.SubjectAlternativeNameSummaries, ",")) { + // 对比证书有效期 + if certItem.NotBefore == nil || !certItem.NotBefore.Equal(certX509.NotBefore) { + continue + } else if certItem.NotAfter == nil || !certItem.NotAfter.Equal(certX509.NotAfter) { continue } diff --git a/pkg/core/certmgr/providers/azure-keyvault/azure_keyvault.go b/pkg/core/certmgr/providers/azure-keyvault/azure_keyvault.go index 0ecfc360..caff2991 100644 --- a/pkg/core/certmgr/providers/azure-keyvault/azure_keyvault.go +++ b/pkg/core/certmgr/providers/azure-keyvault/azure_keyvault.go @@ -12,6 +12,7 @@ import ( "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" "github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azcertificates" + "github.com/samber/lo" "github.com/certimate-go/certimate/pkg/core" xcert "github.com/certimate-go/certimate/pkg/utils/cert" @@ -94,11 +95,9 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo // 对比证书有效期 if certItem.Attributes == nil { continue - } - if certItem.Attributes.NotBefore == nil || !certItem.Attributes.NotBefore.Equal(certX509.NotBefore) { + } else if !lo.FromPtr(certItem.Attributes.NotBefore).Equal(certX509.NotBefore) { continue - } - if certItem.Attributes.Expires == nil || !certItem.Attributes.Expires.Equal(certX509.NotAfter) { + } else if !lo.FromPtr(certItem.Attributes.Expires).Equal(certX509.NotAfter) { continue } diff --git a/pkg/core/certmgr/providers/baiducloud-cert/baiducloud_cert.go b/pkg/core/certmgr/providers/baiducloud-cert/baiducloud_cert.go index db92b9e6..cc2554f0 100644 --- a/pkg/core/certmgr/providers/baiducloud-cert/baiducloud_cert.go +++ b/pkg/core/certmgr/providers/baiducloud-cert/baiducloud_cert.go @@ -78,6 +78,11 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo continue } + // 对比证书备用名称 + if certItem.CertDNSNames != strings.Join(certX509.DNSNames, ",") { + continue + } + // 对比证书有效期 oldCertNotBefore, _ := time.Parse("2006-01-02T15:04:05Z", certItem.CertStartTime) oldCertNotAfter, _ := time.Parse("2006-01-02T15:04:05Z", certItem.CertStopTime) @@ -85,11 +90,6 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo continue } - // 对比证书多域名 - if certItem.CertDNSNames != strings.Join(certX509.DNSNames, ",") { - continue - } - // 对比证书内容 getCertDetailResp, err := c.sdkClient.GetCertRawData(certItem.CertId) c.logger.Debug("sdk request 'cert.GetCertRawData'", slog.String("params.certId", certItem.CertId), slog.Any("response", getCertDetailResp)) diff --git a/pkg/core/certmgr/providers/byteplus-cdn/byteplus_cdn.go b/pkg/core/certmgr/providers/byteplus-cdn/byteplus_cdn.go index 0e11dc7b..0617b418 100644 --- a/pkg/core/certmgr/providers/byteplus-cdn/byteplus_cdn.go +++ b/pkg/core/certmgr/providers/byteplus-cdn/byteplus_cdn.go @@ -90,16 +90,15 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo return nil, fmt.Errorf("failed to execute sdk request 'cdn.ListCertInfo': %w", err) } + fingerprintSha1 := sha1.Sum(certX509.Raw) + fingerprintSha1Hex := hex.EncodeToString(fingerprintSha1[:]) + fingerprintSha256 := sha256.Sum256(certX509.Raw) + fingerprintSha256Hex := hex.EncodeToString(fingerprintSha256[:]) for _, certItem := range listCertInfoResp.Result.CertInfo { - // 对比证书 SHA-1 摘要 - fingerprintSha1 := sha1.Sum(certX509.Raw) - if !strings.EqualFold(hex.EncodeToString(fingerprintSha1[:]), certItem.CertFingerprint.Sha1) { + // 对比证书指纹 + if !strings.EqualFold(fingerprintSha1Hex, certItem.CertFingerprint.Sha1) { continue - } - - // 对比证书 SHA-256 摘要 - fingerprintSha256 := sha256.Sum256(certX509.Raw) - if !strings.EqualFold(hex.EncodeToString(fingerprintSha256[:]), certItem.CertFingerprint.Sha256) { + } else if !strings.EqualFold(fingerprintSha256Hex, certItem.CertFingerprint.Sha256) { continue } diff --git a/pkg/core/certmgr/providers/cmcccloud-vlb/cmcccloud_vlb.go b/pkg/core/certmgr/providers/cmcccloud-vlb/cmcccloud_vlb.go index 5d8765b8..f65b0dba 100644 --- a/pkg/core/certmgr/providers/cmcccloud-vlb/cmcccloud_vlb.go +++ b/pkg/core/certmgr/providers/cmcccloud-vlb/cmcccloud_vlb.go @@ -124,7 +124,7 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo &model.CreateLoadbalanceCertificationBody{ Name: lo.ToPtr(certName), Type: lo.ToPtr(lo.Ternary(c.config.IsSNI, model.CreateLoadbalanceCertificationBodyTypeEnumSni, model.CreateLoadbalanceCertificationBodyTypeEnumServer)), - Description: lo.ToPtr("upload from certimate"), + Description: lo.ToPtr("upload from Certimate"), PublicKey: lo.ToPtr(certPEM), PrivateKey: lo.ToPtr(privkeyPEM), }, diff --git a/pkg/core/certmgr/providers/ctcccloud-cms/ctcccloud_cms.go b/pkg/core/certmgr/providers/ctcccloud-cms/ctcccloud_cms.go index d8173171..078b9576 100644 --- a/pkg/core/certmgr/providers/ctcccloud-cms/ctcccloud_cms.go +++ b/pkg/core/certmgr/providers/ctcccloud-cms/ctcccloud_cms.go @@ -154,8 +154,10 @@ func (c *Certmgr) tryGetResultIfCertExists(ctx context.Context, certPEM string) break } + fingerprintSha1 := sha1.Sum(certX509.Raw) + fingerprintSha1Hex := hex.EncodeToString(fingerprintSha1[:]) for _, certItem := range getCertificateListResp.ReturnObj.List { - // 对比证书多域名 + // 对比证书备用名称 if !strings.EqualFold(strings.Join(certX509.DNSNames, ","), certItem.DomainName) { continue } @@ -170,9 +172,7 @@ func (c *Certmgr) tryGetResultIfCertExists(ctx context.Context, certPEM string) } // 对比证书指纹 - fingerprint := sha1.Sum(certX509.Raw) - fingerprintHex := hex.EncodeToString(fingerprint[:]) - if !strings.EqualFold(fingerprintHex, certItem.Fingerprint) { + if !strings.EqualFold(fingerprintSha1Hex, certItem.Fingerprint) { continue } diff --git a/pkg/core/certmgr/providers/ctcccloud-elb/ctcccloud_elb.go b/pkg/core/certmgr/providers/ctcccloud-elb/ctcccloud_elb.go index d7b1f756..3e68c545 100644 --- a/pkg/core/certmgr/providers/ctcccloud-elb/ctcccloud_elb.go +++ b/pkg/core/certmgr/providers/ctcccloud-elb/ctcccloud_elb.go @@ -94,7 +94,7 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo ClientToken: lo.ToPtr(security.RandomString(32)), RegionID: lo.ToPtr(c.config.RegionId), Name: lo.ToPtr(certName), - Description: lo.ToPtr("upload from certimate"), + Description: lo.ToPtr("upload from Certimate"), Type: lo.ToPtr("Server"), Certificate: lo.ToPtr(certPEM), PrivateKey: lo.ToPtr(privkeyPEM), diff --git a/pkg/core/certmgr/providers/digitalocean-certificate/digitalocean_certificate.go b/pkg/core/certmgr/providers/digitalocean-certificate/digitalocean_certificate.go index 2c0a604f..ec08c669 100644 --- a/pkg/core/certmgr/providers/digitalocean-certificate/digitalocean_certificate.go +++ b/pkg/core/certmgr/providers/digitalocean-certificate/digitalocean_certificate.go @@ -95,6 +95,8 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo return nil, fmt.Errorf("failed to execute sdk request 'ListCertificates': %w", err) } + fingerprintSha1 := sha1.Sum(certX509.Raw) + fingerprintSha1Hex := hex.EncodeToString(fingerprintSha1[:]) for _, certItem := range listCertificatesResp.Certificates { // 对比证书扩展名称 if !slices.Equal(certX509.DNSNames, certItem.DNSNames) { @@ -108,8 +110,6 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo } // 对比证书指纹 - fingerprintSha1 := sha1.Sum(certX509.Raw) - fingerprintSha1Hex := hex.EncodeToString(fingerprintSha1[:]) if !strings.EqualFold(fingerprintSha1Hex, certItem.SHA1Fingerprint) { continue } diff --git a/pkg/core/certmgr/providers/jdcloud-ssl/jdcloud_ssl.go b/pkg/core/certmgr/providers/jdcloud-ssl/jdcloud_ssl.go index d83089e2..1bdd2885 100644 --- a/pkg/core/certmgr/providers/jdcloud-ssl/jdcloud_ssl.go +++ b/pkg/core/certmgr/providers/jdcloud-ssl/jdcloud_ssl.go @@ -104,7 +104,7 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo continue } - // 对比证书多域名 + // 对比证书备用名称 if !strings.EqualFold(strings.Join(certX509.DNSNames, ","), strings.Join(certItem.DnsNames, ",")) { continue } diff --git a/pkg/core/certmgr/providers/ksyun-kcm/ksyun_kcm.go b/pkg/core/certmgr/providers/ksyun-kcm/ksyun_kcm.go index 31b9fd7c..d7d2989d 100644 --- a/pkg/core/certmgr/providers/ksyun-kcm/ksyun_kcm.go +++ b/pkg/core/certmgr/providers/ksyun-kcm/ksyun_kcm.go @@ -137,8 +137,10 @@ func (c *Certmgr) tryGetResultIfCertExists(ctx context.Context, certPEM string) break } + fingerprintSha1 := sha1.Sum(certX509.Raw) + fingerprintSha1Hex := hex.EncodeToString(fingerprintSha1[:]) for _, certItem := range listUserCertificatesResp.Ret.Certs { - // 对比证书多域名 + // 对比证书备用名称 if !strings.EqualFold(strings.Join(certX509.DNSNames, ","), strings.Join(certItem.Domains, ",")) { continue } @@ -149,9 +151,7 @@ func (c *Certmgr) tryGetResultIfCertExists(ctx context.Context, certPEM string) } // 对比证书指纹 - fingerprint := sha1.Sum(certX509.Raw) - fingerprintHex := hex.EncodeToString(fingerprint[:]) - if !strings.EqualFold(fingerprintHex, certItem.FingerPrint) { + if !strings.EqualFold(fingerprintSha1Hex, certItem.FingerPrint) { continue } diff --git a/pkg/core/certmgr/providers/ksyun-slb/ksyun_slb.go b/pkg/core/certmgr/providers/ksyun-slb/ksyun_slb.go index 42a431c8..b3622820 100644 --- a/pkg/core/certmgr/providers/ksyun-slb/ksyun_slb.go +++ b/pkg/core/certmgr/providers/ksyun-slb/ksyun_slb.go @@ -132,7 +132,7 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo createCertificateReq := &ksyunkcmsdk.CreateCertificateRequest{ Region: lo.ToPtr(c.config.Region), CertificateName: lo.ToPtr(fmt.Sprintf("certimate-%d", time.Now().UnixMilli())), - Description: lo.ToPtr("upload from certimate"), + Description: lo.ToPtr("upload from Certimate"), Source: lo.ToPtr("kcm"), SSLCertificateId: lo.ToPtr(upres.CertId), } @@ -159,7 +159,7 @@ func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, pri // REF: https://apiexplorer.ksyun.com/#/api/96/ModifyCertificate/2016-03-04/1013 modifyCertificateReq := &ksyunkcmsdk.ModifyCertificateRequest{ Region: lo.ToPtr(c.config.Region), - Description: lo.ToPtr("upload from certimate"), + Description: lo.ToPtr("upload from Certimate"), SSLCertificateId: lo.ToPtr(upres.CertId), } modifyCertificateResp, err := c.sdkClient.ModifyCertificateWithContext(ctx, modifyCertificateReq) diff --git a/pkg/core/certmgr/providers/qiniu-sslcert/qiniu_sslcert.go b/pkg/core/certmgr/providers/qiniu-sslcert/qiniu_sslcert.go index a428cc4f..55848fd9 100644 --- a/pkg/core/certmgr/providers/qiniu-sslcert/qiniu_sslcert.go +++ b/pkg/core/certmgr/providers/qiniu-sslcert/qiniu_sslcert.go @@ -93,7 +93,7 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo continue } - // 对比证书多域名 + // 对比证书备用名称 if !slices.Equal(certX509.DNSNames, sslItem.DnsNames) { continue } @@ -118,7 +118,6 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo continue } default: - // 未知算法,跳过 continue } diff --git a/pkg/core/certmgr/providers/rainyun-sslcenter/rainyun_sslcenter.go b/pkg/core/certmgr/providers/rainyun-sslcenter/rainyun_sslcenter.go index c3db1792..3e32e663 100644 --- a/pkg/core/certmgr/providers/rainyun-sslcenter/rainyun_sslcenter.go +++ b/pkg/core/certmgr/providers/rainyun-sslcenter/rainyun_sslcenter.go @@ -147,12 +147,12 @@ func (c *Certmgr) tryGetResultIfCertExists(ctx context.Context, certPEM string) } for _, sslItem := range sslCenterListResp.Data.Records { - // 对比证书的多域名 + // 对比证书备用名称 if sslItem.Domain != strings.Join(certX509.DNSNames, ", ") { continue } - // 对比证书的有效期 + // 对比证书有效期 if sslItem.StartDate != certX509.NotBefore.Unix() || sslItem.ExpireDate != certX509.NotAfter.Unix() { continue } diff --git a/pkg/core/certmgr/providers/ucloud-ussl/ucloud_ussl.go b/pkg/core/certmgr/providers/ucloud-ussl/ucloud_ussl.go index 2e3cef82..143aa77e 100644 --- a/pkg/core/certmgr/providers/ucloud-ussl/ucloud_ussl.go +++ b/pkg/core/certmgr/providers/ucloud-ussl/ucloud_ussl.go @@ -146,28 +146,30 @@ func (c *Certmgr) tryGetResultIfCertExists(ctx context.Context, certPEM string) } for _, certItem := range getCertificateListResp.CertificateList { - // 优刻得未提供可唯一标识证书的字段,只能通过多个字段尝试对比来判断是否为同一证书 - // 先分别对比证书的多域名、品牌、有效期,再对比签名算法 - + // 对比证书备用名称 if len(certX509.DNSNames) == 0 || certItem.Domains != strings.Join(certX509.DNSNames, ",") { continue } + // 对比证书颁发者 if len(certX509.Issuer.Organization) == 0 || certItem.Brand != certX509.Issuer.Organization[0] { continue } - if int64(certItem.NotBefore) != certX509.NotBefore.UnixMilli() || int64(certItem.NotAfter) != certX509.NotAfter.UnixMilli() { + // 对比证书有效期 + if int64(certItem.NotBefore) != certX509.NotBefore.UnixMilli() { + continue + } else if int64(certItem.NotAfter) != certX509.NotAfter.UnixMilli() { continue } + // 对比证书签名算法 getCertificateDetailInfoReq := c.sdkClient.NewGetCertificateDetailInfoRequest() getCertificateDetailInfoReq.CertificateID = ucloud.Int(certItem.CertificateID) getCertificateDetailInfoResp, err := c.sdkClient.GetCertificateDetailInfo(getCertificateDetailInfoReq) if err != nil { return nil, false, fmt.Errorf("failed to execute sdk request 'ussl.GetCertificateDetailInfo': %w", err) } - switch certX509.SignatureAlgorithm { case x509.SHA256WithRSA: if !strings.EqualFold(getCertificateDetailInfoResp.CertificateInfo.Algorithm, "SHA256-RSA") { diff --git a/pkg/core/certmgr/providers/volcengine-cdn/volcengine_cdn.go b/pkg/core/certmgr/providers/volcengine-cdn/volcengine_cdn.go index 933da1c1..a1a1c88e 100644 --- a/pkg/core/certmgr/providers/volcengine-cdn/volcengine_cdn.go +++ b/pkg/core/certmgr/providers/volcengine-cdn/volcengine_cdn.go @@ -96,16 +96,15 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo return nil, fmt.Errorf("failed to execute sdk request 'cdn.ListCertInfo': %w", err) } + fingerprintSha1 := sha1.Sum(certX509.Raw) + fingerprintSha1Hex := hex.EncodeToString(fingerprintSha1[:]) + fingerprintSha256 := sha256.Sum256(certX509.Raw) + fingerprintSha256Hex := hex.EncodeToString(fingerprintSha256[:]) for _, certItem := range listCertInfoResp.CertInfo { - // 对比证书 SHA-1 摘要 - fingerprintSha1 := sha1.Sum(certX509.Raw) - if !strings.EqualFold(hex.EncodeToString(fingerprintSha1[:]), ve.StringValue(certItem.CertFingerprint.Sha1)) { + // 对比证书指纹 + if !strings.EqualFold(fingerprintSha1Hex, ve.StringValue(certItem.CertFingerprint.Sha1)) { continue - } - - // 对比证书 SHA-256 摘要 - fingerprintSha256 := sha256.Sum256(certX509.Raw) - if !strings.EqualFold(hex.EncodeToString(fingerprintSha256[:]), ve.StringValue(certItem.CertFingerprint.Sha256)) { + } else if !strings.EqualFold(fingerprintSha256Hex, ve.StringValue(certItem.CertFingerprint.Sha256)) { continue } diff --git a/pkg/core/certmgr/providers/wangsu-certificate/wangsu_certificate.go b/pkg/core/certmgr/providers/wangsu-certificate/wangsu_certificate.go index 159ebbf5..34654fa2 100644 --- a/pkg/core/certmgr/providers/wangsu-certificate/wangsu_certificate.go +++ b/pkg/core/certmgr/providers/wangsu-certificate/wangsu_certificate.go @@ -109,7 +109,7 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo Name: lo.ToPtr(certName), Certificate: lo.ToPtr(certPEM), PrivateKey: lo.ToPtr(privkeyPEM), - Comment: lo.ToPtr("upload from certimate"), + Comment: lo.ToPtr("upload from Certimate"), } createCertificateResp, err := c.sdkClient.CreateCertificateWithContext(ctx, createCertificateReq) c.logger.Debug("sdk request 'certificatemanagement.CreateCertificate'", slog.Any("request", createCertificateReq), slog.Any("response", createCertificateResp)) @@ -141,7 +141,7 @@ func (c *Certmgr) Replace(ctx context.Context, certIdOrName string, certPEM, pri Name: lo.ToPtr(certName), Certificate: lo.ToPtr(certPEM), PrivateKey: lo.ToPtr(privkeyPEM), - Comment: lo.ToPtr("upload from certimate"), + Comment: lo.ToPtr("upload from Certimate"), } updateCertificateResp, err := c.sdkClient.UpdateCertificateWithContext(ctx, certId, updateCertificateReq) c.logger.Debug("sdk request 'certificatemanagement.UpdateCertificate'", slog.Any("request", updateCertificateReq), slog.Any("response", updateCertificateResp)) diff --git a/pkg/core/certmgr/providers/zenlayer-cdn/zenlayer_cdn.go b/pkg/core/certmgr/providers/zenlayer-cdn/zenlayer_cdn.go index c99a27a7..f1acee93 100644 --- a/pkg/core/certmgr/providers/zenlayer-cdn/zenlayer_cdn.go +++ b/pkg/core/certmgr/providers/zenlayer-cdn/zenlayer_cdn.go @@ -95,6 +95,10 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo return nil, fmt.Errorf("failed to execute sdk request 'cdn.DescribeCertificates': %w", err) } + fingerprintMd5 := md5.Sum(certX509.Raw) + fingerprintMd5Hex := hex.EncodeToString(fingerprintMd5[:]) + fingerprintSha1 := sha1.Sum(certX509.Raw) + fingerprintSha1Hex := hex.EncodeToString(fingerprintSha1[:]) for _, certItem := range describeCertificatesResp.Response.DataSet { // 对比证书通用名称 if !strings.EqualFold(certX509.Subject.CommonName, certItem.Common) { @@ -118,10 +122,6 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo // 对比证书指纹 // // 注意,虽然文档中描述为 MD5 摘要,但示例给出的是 SHA-1 摘要,因此这里都尝试对比一下 - fingerprintMd5 := md5.Sum(certX509.Raw) - fingerprintMd5Hex := hex.EncodeToString(fingerprintMd5[:]) - fingerprintSha1 := sha1.Sum(certX509.Raw) - fingerprintSha1Hex := hex.EncodeToString(fingerprintSha1[:]) if !strings.EqualFold(fingerprintMd5Hex, certItem.Fingerprint) && !strings.EqualFold(fingerprintSha1Hex, certItem.Fingerprint) { continue } @@ -137,7 +137,6 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo continue } default: - // 未知算法,跳过 continue } diff --git a/pkg/core/certmgr/providers/zenlayer-ga/zenlayer_ga.go b/pkg/core/certmgr/providers/zenlayer-ga/zenlayer_ga.go index d778fea5..2c5022c0 100644 --- a/pkg/core/certmgr/providers/zenlayer-ga/zenlayer_ga.go +++ b/pkg/core/certmgr/providers/zenlayer-ga/zenlayer_ga.go @@ -95,6 +95,10 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo return nil, fmt.Errorf("failed to execute sdk request 'zga.DescribeCertificates': %w", err) } + fingerprintMd5 := md5.Sum(certX509.Raw) + fingerprintMd5Hex := hex.EncodeToString(fingerprintMd5[:]) + fingerprintSha1 := sha1.Sum(certX509.Raw) + fingerprintSha1Hex := hex.EncodeToString(fingerprintSha1[:]) for _, certItem := range describeCertificatesResp.Response.DataSet { // 对比证书通用名称 if !strings.EqualFold(certX509.Subject.CommonName, certItem.Common) { @@ -118,10 +122,6 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo // 对比证书指纹 // // 注意,虽然文档中描述为 MD5 摘要,但示例给出的是 SHA-1 摘要,因此这里都尝试对比一下 - fingerprintMd5 := md5.Sum(certX509.Raw) - fingerprintMd5Hex := hex.EncodeToString(fingerprintMd5[:]) - fingerprintSha1 := sha1.Sum(certX509.Raw) - fingerprintSha1Hex := hex.EncodeToString(fingerprintSha1[:]) if !strings.EqualFold(fingerprintMd5Hex, certItem.Fingerprint) && !strings.EqualFold(fingerprintSha1Hex, certItem.Fingerprint) { continue } @@ -137,7 +137,6 @@ func (c *Certmgr) Upload(ctx context.Context, certPEM, privkeyPEM string) (*Uplo continue } default: - // 未知算法,跳过 continue } diff --git a/pkg/core/deployer/providers/flexcdn/flexcdn.go b/pkg/core/deployer/providers/flexcdn/flexcdn.go index 39c58f54..6eb6a7fa 100644 --- a/pkg/core/deployer/providers/flexcdn/flexcdn.go +++ b/pkg/core/deployer/providers/flexcdn/flexcdn.go @@ -102,7 +102,7 @@ func (d *Deployer) deployToCertificate(ctx context.Context, certPEM, privkeyPEM SSLCertId: d.config.CertificateId, IsOn: true, Name: fmt.Sprintf("certimate-%d", time.Now().UnixMilli()), - Description: "upload from certimate", + Description: "upload from Certimate", ServerName: certX509.Subject.CommonName, IsCA: false, CertData: base64.StdEncoding.EncodeToString([]byte(certPEM)), diff --git a/pkg/core/deployer/providers/goedge/goedge.go b/pkg/core/deployer/providers/goedge/goedge.go index 3f9ecaf2..5ec2a377 100644 --- a/pkg/core/deployer/providers/goedge/goedge.go +++ b/pkg/core/deployer/providers/goedge/goedge.go @@ -102,7 +102,7 @@ func (d *Deployer) deployToCertificate(ctx context.Context, certPEM, privkeyPEM SSLCertId: d.config.CertificateId, IsOn: true, Name: fmt.Sprintf("certimate-%d", time.Now().UnixMilli()), - Description: "upload from certimate", + Description: "upload from Certimate", ServerName: certX509.Subject.CommonName, IsCA: false, CertData: base64.StdEncoding.EncodeToString([]byte(certPEM)), diff --git a/pkg/core/deployer/providers/lecdn/lecdn.go b/pkg/core/deployer/providers/lecdn/lecdn.go index 7f6a498b..ed69d82f 100644 --- a/pkg/core/deployer/providers/lecdn/lecdn.go +++ b/pkg/core/deployer/providers/lecdn/lecdn.go @@ -102,7 +102,7 @@ func (d *Deployer) deployToCertificate(ctx context.Context, certPEM, privkeyPEM { updateSSLCertReq := &lecdnclientv3.UpdateCertificateRequest{ Name: fmt.Sprintf("certimate-%d", time.Now().UnixMilli()), - Description: "upload from certimate", + Description: "upload from Certimate", Type: "upload", SSLPEM: certPEM, SSLKey: privkeyPEM, @@ -120,7 +120,7 @@ func (d *Deployer) deployToCertificate(ctx context.Context, certPEM, privkeyPEM updateSSLCertReq := &lecdnmasterv3.UpdateCertificateRequest{ ClientId: d.config.ClientId, Name: fmt.Sprintf("certimate-%d", time.Now().UnixMilli()), - Description: "upload from certimate", + Description: "upload from Certimate", Type: "upload", SSLPEM: certPEM, SSLKey: privkeyPEM,