Standardize issuance time

This commit is contained in:
Spotlight 2022-03-28 14:00:25 -05:00
parent 952c3824e3
commit 79a712e3ad
No known key found for this signature in database
GPG Key ID: 874AA355B3209BDC

View File

@ -10,6 +10,9 @@ import (
"time" "time"
) )
// YearIssueTime is an issuance of this year's date on January 1 at midnight.
var YearIssueTime = time.Date(time.Now().Year(), time.January, 1, 0, 0, 0, 0, time.UTC)
// generateSerial generates a random serial number for our issued certificates. // generateSerial generates a random serial number for our issued certificates.
// It is taken from golang std: src/crypto/tls/generate_cert.go // It is taken from golang std: src/crypto/tls/generate_cert.go
// Direct permalink on GitHub: https://git.io/JyyDw // Direct permalink on GitHub: https://git.io/JyyDw
@ -25,14 +28,14 @@ func createCertificates() []byte {
//////////////////////////////////// ////////////////////////////////////
// Generate root CA // // Generate root CA //
//////////////////////////////////// ////////////////////////////////////
rootCAFormat := x509.Certificate{ rootCert := &x509.Certificate{
SignatureAlgorithm: x509.SHA1WithRSA, SignatureAlgorithm: x509.SHA1WithRSA,
SerialNumber: generateSerial(), SerialNumber: generateSerial(),
Subject: pkix.Name{ Subject: pkix.Name{
CommonName: "Open Shop Channel CA", CommonName: "Open Shop Channel CA",
}, },
NotBefore: time.Now(), NotBefore: YearIssueTime,
NotAfter: time.Now().AddDate(10, 0, 0), NotAfter: YearIssueTime.AddDate(10, 0, 0),
KeyUsage: x509.KeyUsageCertSign, KeyUsage: x509.KeyUsageCertSign,
BasicConstraintsValid: true, BasicConstraintsValid: true,
IsCA: true, IsCA: true,
@ -41,13 +44,13 @@ func createCertificates() []byte {
rootPriv, err := rsa.GenerateKey(rand.Reader, 2048) rootPriv, err := rsa.GenerateKey(rand.Reader, 2048)
check(err) check(err)
rootCert, err := x509.CreateCertificate(rand.Reader, &rootCAFormat, &rootCAFormat, &rootPriv.PublicKey, rootPriv) rootPublic, err := x509.CreateCertificate(rand.Reader, rootCert, rootCert, &rootPriv.PublicKey, rootPriv)
check(err) check(err)
//////////////////////////////////// ////////////////////////////////////
// Issue server TLS certificate // // Issue server TLS certificate //
//////////////////////////////////// ////////////////////////////////////
serverCertFormat := x509.Certificate{ serverCert := x509.Certificate{
SignatureAlgorithm: x509.SHA1WithRSA, SignatureAlgorithm: x509.SHA1WithRSA,
SerialNumber: generateSerial(), SerialNumber: generateSerial(),
// We'll issue with a primary common name for our base domain. // We'll issue with a primary common name for our base domain.
@ -58,8 +61,8 @@ func createCertificates() []byte {
DNSNames: []string{ DNSNames: []string{
"*." + baseDomain, "*." + baseDomain,
}, },
NotBefore: time.Now(), NotBefore: YearIssueTime,
NotAfter: time.Now().AddDate(10, 0, 0), NotAfter: YearIssueTime.AddDate(10, 0, 0),
KeyUsage: x509.KeyUsageKeyAgreement | x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature, KeyUsage: x509.KeyUsageKeyAgreement | x509.KeyUsageKeyEncipherment | x509.KeyUsageDigitalSignature,
ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth},
IsCA: false, IsCA: false,
@ -69,24 +72,24 @@ func createCertificates() []byte {
serverPriv, err := rsa.GenerateKey(rand.Reader, 2048) serverPriv, err := rsa.GenerateKey(rand.Reader, 2048)
check(err) check(err)
serverCert, err := x509.CreateCertificate(rand.Reader, &serverCertFormat, &rootCAFormat, &serverPriv.PublicKey, rootPriv) serverPublic, err := x509.CreateCertificate(rand.Reader, &serverCert, rootCert, &serverPriv.PublicKey, rootPriv)
check(err) check(err)
//////////////////////////// ////////////////////////////
// Persist certificates // // Persist certificates //
//////////////////////////// ////////////////////////////
rootCertPem := pemEncode("CERTIFICATE", rootCert) rootCertPem := pemEncode("CERTIFICATE", rootPublic)
rootKeyPem := pemEncode("RSA PRIVATE KEY", x509.MarshalPKCS1PrivateKey(rootPriv)) rootKeyPem := pemEncode("RSA PRIVATE KEY", x509.MarshalPKCS1PrivateKey(rootPriv))
serverCertPem := pemEncode("CERTIFICATE", serverCert) serverCertPem := pemEncode("CERTIFICATE", serverPublic)
serverKeyPem := pemEncode("RSA PRIVATE KEY", x509.MarshalPKCS1PrivateKey(serverPriv)) serverKeyPem := pemEncode("RSA PRIVATE KEY", x509.MarshalPKCS1PrivateKey(serverPriv))
writeOut("root.pem", rootCertPem) writeOut("root.pem", rootCertPem)
writeOut("root.cer", rootCert) writeOut("root.cer", rootPublic)
writeOut("root.key", rootKeyPem) writeOut("root.key", rootKeyPem)
writeOut("server.pem", serverCertPem) writeOut("server.pem", serverCertPem)
writeOut("server.key", serverKeyPem) writeOut("server.key", serverKeyPem)
return rootCert return rootPublic
} }
func pemEncode(typeName string, bytes []byte) []byte { func pemEncode(typeName string, bytes []byte) []byte {