rio/certificate.go

42 lines
1019 B
Go
Raw Normal View History

2023-12-31 21:41:51 +00:00
package main
import (
"crypto/tls"
"encoding/base64"
"time"
// "github.com/go-acme/lego/v4/certcrypto"
"github.com/go-acme/lego/v4/certificate"
"github.com/go-acme/lego/v4/lego"
)
func ObtainNewCertificate(domains []string, path string, acmeClient *lego.Client) error {
req := certificate.ObtainRequest{
Domains: domains,
2023-12-31 23:38:39 +00:00
Bundle: true,
2023-12-31 21:41:51 +00:00
}
cert, err := acmeClient.Certificate.Obtain(req)
if err != nil {
return err
}
tlsCert, err := tls.X509KeyPair(cert.Certificate, cert.PrivateKey)
if err != nil {
return err
}
wrapper := CertificateWrapper{
TlsCertificate: &tlsCert,
2023-12-31 23:38:39 +00:00
Domain: cert.Domain,
2023-12-31 21:41:51 +00:00
//NotAfter: tlsCert.Leaf.NotAfter,
2023-12-31 23:38:39 +00:00
NotAfter: time.Now().Add(time.Hour * 24 * 60),
2023-12-31 21:41:51 +00:00
PrivateKeyEncoded: base64.StdEncoding.EncodeToString(cert.PrivateKey),
2023-12-31 23:38:39 +00:00
Certificate: cert.Certificate,
2023-12-31 21:41:51 +00:00
IssuerCertificate: cert.IssuerCertificate,
2023-12-31 23:38:39 +00:00
CertificateUrl: cert.CertURL,
2023-12-31 21:41:51 +00:00
}
Certificates.Certificates[cert.Domain] = wrapper
FlushCertificateStoreToFile(path)
return nil
}