Files
scm/utils/CreateServerCert.go
T
2025-07-16 14:12:27 +07:00

43 lines
1.0 KiB
Go

package utils
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"crypto/x509/pkix"
"math/big"
"scm/model"
"time"
)
func CreateServerCert(
caCert *x509.Certificate,
caKey *rsa.PrivateKey,
serverKey *rsa.PrivateKey,
certdata model.CreateCertRequest,
) ([]byte, error) {
// Шаблон серверного сертификата
template := x509.Certificate{
SerialNumber: big.NewInt(time.Now().Unix()),
Subject: pkix.Name{
Organization: certdata.OrganizationName,
CommonName: certdata.CommonName,
OrganizationalUnit: certdata.OrganizationUnit,
},
NotBefore: time.Now(),
NotAfter: time.Now().AddDate(1, 0, 0), // 1 год
KeyUsage: x509.KeyUsageDigitalSignature | x509.KeyUsageKeyEncipherment,
ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
DNSNames: certdata.DNSNames,
}
// Создаем сертификат, подписанный CA
return x509.CreateCertificate(
rand.Reader,
&template,
caCert,
&serverKey.PublicKey,
caKey,
)
}