diff --git a/internal/data/cert.go b/internal/data/cert.go index d03ada3a..69aac9ad 100644 --- a/internal/data/cert.go +++ b/internal/data/cert.go @@ -53,6 +53,7 @@ func (r *certRepo) List(page, limit uint) ([]*types.CertList, int64, error) { AutoRenew: cert.AutoRenew, Cert: cert.Cert, Key: cert.Key, + CertURL: cert.CertURL, Script: cert.Script, CreatedAt: cert.CreatedAt, UpdatedAt: cert.UpdatedAt, @@ -290,7 +291,11 @@ func (r *certRepo) Renew(id uint) (*acme.Certificate, error) { ssl, err := client.RenewCertificate(context.Background(), cert.CertURL, cert.Domains, acme.KeyType(cert.Type)) if err != nil { - return nil, err + // 续签失败,尝试重签 + ssl, err = client.ObtainCertificate(context.Background(), cert.Domains, acme.KeyType(cert.Type)) + if err != nil { + return nil, err + } } cert.CertURL = ssl.URL diff --git a/pkg/types/cert.go b/pkg/types/cert.go index 013cdc74..bae52669 100644 --- a/pkg/types/cert.go +++ b/pkg/types/cert.go @@ -12,6 +12,7 @@ type CertList struct { AutoRenew bool `json:"auto_renew"` Cert string `json:"cert"` Key string `json:"key"` + CertURL string `json:"cert_url"` Script string `json:"script"` NotBefore time.Time `json:"not_before"` NotAfter time.Time `json:"not_after"` diff --git a/web/src/views/cert/CertView.vue b/web/src/views/cert/CertView.vue index a9e9955d..aeca82bb 100644 --- a/web/src/views/cert/CertView.vue +++ b/web/src/views/cert/CertView.vue @@ -219,7 +219,7 @@ const columns: any = [ } ) : null, - row.cert != '' && row.key != '' && row.type != 'upload' + row.cert_url != '' && row.type != 'upload' ? h( NButton, {