| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | package certimport (	"crypto/x509"	"encoding/pem"	"github.com/0xJacky/Nginx-UI/internal/helper"	"github.com/0xJacky/Nginx-UI/internal/nginx"	"github.com/pkg/errors"	"os"	"time")type Info struct {	SubjectName string    `json:"subject_name"`	IssuerName  string    `json:"issuer_name"`	NotAfter    time.Time `json:"not_after"`	NotBefore   time.Time `json:"not_before"`}func GetCertInfo(sslCertificatePath string) (info *Info, err error) {	if !helper.IsUnderDirectory(sslCertificatePath, nginx.GetConfPath()) {		err = errors.New("ssl certificate path is not under the nginx conf path")		return	}	certData, err := os.ReadFile(sslCertificatePath)	if err != nil {		err = errors.Wrap(err, "error read certificate")		return	}	block, _ := pem.Decode(certData)	if block == nil || block.Type != "CERTIFICATE" {		err = errors.New("certificate decoding error")		return	}	cert, err := x509.ParseCertificate(block.Bytes)	if err != nil {		err = errors.Wrap(err, "certificate parsing error")		return	}	info = &Info{		SubjectName: cert.Subject.CommonName,		IssuerName:  cert.Issuer.CommonName,		NotAfter:    cert.NotAfter,		NotBefore:   cert.NotBefore,	}	return}
 |