2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 10:17:17 +08:00

fix: 面板IP证书续签

This commit is contained in:
2026-01-31 18:40:41 +08:00
parent 2d3250bc51
commit cef8d7caa7
6 changed files with 33 additions and 30 deletions

View File

@@ -65,7 +65,7 @@ func (r *certRepo) List(page, limit uint) ([]*types.CertList, int64, error) {
CreatedAt: cert.CreatedAt,
UpdatedAt: cert.UpdatedAt,
}
if decode, err := pkgcert.ParseCert(cert.Cert); err == nil {
if decode, err := pkgcert.ParseCert([]byte(cert.Cert)); err == nil {
item.NotBefore = decode.NotBefore
item.NotAfter = decode.NotAfter
item.Issuer = decode.Issuer.CommonName
@@ -95,11 +95,11 @@ func (r *certRepo) GetByWebsite(WebsiteID uint) (*biz.Cert, error) {
}
func (r *certRepo) Upload(ctx context.Context, req *request.CertUpload) (*biz.Cert, error) {
info, err := pkgcert.ParseCert(req.Cert)
info, err := pkgcert.ParseCert([]byte(req.Cert))
if err != nil {
return nil, errors.New(r.t.Get("failed to parse certificate: %v", err))
}
if _, err = pkgcert.ParseKey(req.Key); err != nil {
if _, err = pkgcert.ParseKey([]byte(req.Key)); err != nil {
return nil, errors.New(r.t.Get("failed to parse private key: %v", err))
}
@@ -145,7 +145,7 @@ func (r *certRepo) Create(ctx context.Context, req *request.CertCreate) (*biz.Ce
}
func (r *certRepo) Update(ctx context.Context, req *request.CertUpdate) error {
info, err := pkgcert.ParseCert(req.Cert)
info, err := pkgcert.ParseCert([]byte(req.Cert))
if err == nil && req.Type == "upload" {
// 合并 DNSNames 和 IPAddresses
req.Domains = info.DNSNames
@@ -364,7 +364,7 @@ func (r *certRepo) RefreshRenewalInfo(id uint) (mholtacme.RenewalInfo, error) {
return mholtacme.RenewalInfo{}, err
}
crt, err := pkgcert.ParseCert(cert.Cert)
crt, err := pkgcert.ParseCert([]byte(cert.Cert))
if err != nil {
return mholtacme.RenewalInfo{}, err
}

View File

@@ -284,10 +284,10 @@ func (r *settingRepo) UpdatePanel(ctx context.Context, req *request.SettingPanel
}
restartFlag = true
}
if _, err := cert.ParseCert(req.Cert); err != nil {
if _, err := cert.ParseCert([]byte(req.Cert)); err != nil {
return false, errors.New(r.t.Get("failed to parse certificate: %v", err))
}
if _, err := cert.ParseKey(req.Key); err != nil {
if _, err := cert.ParseKey([]byte(req.Key)); err != nil {
return false, errors.New(r.t.Get("failed to parse private key: %v", err))
}
if err := io.Write(filepath.Join(app.Root, "panel/storage/cert.pem"), req.Cert, 0600); err != nil {
@@ -357,10 +357,10 @@ func (r *settingRepo) UpdateCert(req *request.SettingCert) error {
if r.task.HasRunningTask() {
return errors.New(r.t.Get("background task is running, modifying some settings is prohibited, please try again later"))
}
if _, err := cert.ParseCert(req.Cert); err != nil {
if _, err := cert.ParseCert([]byte(req.Cert)); err != nil {
return errors.New(r.t.Get("failed to parse certificate: %v", err))
}
if _, err := cert.ParseKey(req.Key); err != nil {
if _, err := cert.ParseKey([]byte(req.Key)); err != nil {
return errors.New(r.t.Get("failed to parse private key: %v", err))
}

View File

@@ -176,10 +176,10 @@ func (r *websiteRepo) Get(id uint) (*types.WebsiteSetting, error) {
setting.SSLCiphers = sslConfig.Ciphers
}
// 证书
crt, _ := io.Read(filepath.Join(app.Root, "sites", website.Name, "config", "fullchain.pem"))
setting.SSLCert = crt
key, _ := io.Read(filepath.Join(app.Root, "sites", website.Name, "config", "private.key"))
setting.SSLKey = key
crt, _ := os.ReadFile(filepath.Join(app.Root, "sites", website.Name, "config", "fullchain.pem"))
setting.SSLCert = string(crt)
key, _ := os.ReadFile(filepath.Join(app.Root, "sites", website.Name, "config", "private.key"))
setting.SSLKey = string(key)
// 解析证书信息
if decode, err := cert.ParseCert(crt); err == nil {
setting.SSLNotBefore = decode.NotBefore.Format(time.DateTime)
@@ -259,7 +259,7 @@ func (r *websiteRepo) List(typ string, page, limit uint) ([]*biz.Website, int64,
// 取证书剩余有效时间和PHP版本
for _, website := range websites {
crt, _ := io.Read(filepath.Join(app.Root, "sites", website.Name, "config", "fullchain.pem"))
crt, _ := os.ReadFile(filepath.Join(app.Root, "sites", website.Name, "config", "fullchain.pem"))
if decode, err := cert.ParseCert(crt); err == nil {
hours := time.Until(decode.NotAfter).Hours()
website.CertExpire = fmt.Sprintf("%.2f", hours/24)
@@ -605,10 +605,10 @@ func (r *websiteRepo) Update(ctx context.Context, req *request.WebsiteUpdate) er
}
website.SSL = req.SSL
if req.SSL {
if _, err = cert.ParseCert(req.SSLCert); err != nil {
if _, err = cert.ParseCert([]byte(req.SSLCert)); err != nil {
return errors.New(r.t.Get("failed to parse certificate: %v", err))
}
if _, err = cert.ParseKey(req.SSLKey); err != nil {
if _, err = cert.ParseKey([]byte(req.SSLKey)); err != nil {
return errors.New(r.t.Get("failed to parse private key: %v", err))
}
quic := false
@@ -925,10 +925,10 @@ func (r *websiteRepo) UpdateCert(req *request.WebsiteUpdateCert) error {
return err
}
if _, err := cert.ParseCert(req.Cert); err != nil {
if _, err := cert.ParseCert([]byte(req.Cert)); err != nil {
return errors.New(r.t.Get("failed to parse certificate: %v", err))
}
if _, err := cert.ParseKey(req.Key); err != nil {
if _, err := cert.ParseKey([]byte(req.Key)); err != nil {
return errors.New(r.t.Get("failed to parse private key: %v", err))
}