|
|
|
@@ -271,7 +271,7 @@ func parseValidity(validity string) (time.Duration, error) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func SavePEM(filename string, data []byte, secure bool, overwrite bool) error {
|
|
|
|
|
func SavePEM(filename string, data []byte, secure bool) error {
|
|
|
|
|
if !overwrite {
|
|
|
|
|
if _, err := os.Stat(filename); err == nil {
|
|
|
|
|
return fmt.Errorf("file %s already exists (overwrite not allowed)", filename)
|
|
|
|
@@ -321,7 +321,7 @@ func (c *_CAConfig) Validate() error {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func InitCA(overwrite bool) error {
|
|
|
|
|
func InitCA() error {
|
|
|
|
|
|
|
|
|
|
var err error
|
|
|
|
|
|
|
|
|
@@ -409,11 +409,11 @@ func InitCA(overwrite bool) error {
|
|
|
|
|
certPEM := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: certDER})
|
|
|
|
|
keyPEM := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)})
|
|
|
|
|
|
|
|
|
|
if err := SavePEM(filepath.Join(CAConfig.Paths.Certificates, "ca_cert.pem"), certPEM, false, overwrite); err != nil {
|
|
|
|
|
if err := SavePEM(filepath.Join(CAConfig.Paths.Certificates, "ca_cert.pem"), certPEM, false); err != nil {
|
|
|
|
|
fmt.Println("Error saving CA certificate:", err)
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
if err := SavePEM(filepath.Join(CAConfig.Paths.PrivateKeys, "ca_key.pem"), keyPEM, true, overwrite); err != nil {
|
|
|
|
|
if err := SavePEM(filepath.Join(CAConfig.Paths.PrivateKeys, "ca_key.pem"), keyPEM, true); err != nil {
|
|
|
|
|
fmt.Println("Error saving CA key:", err)
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
@@ -433,7 +433,7 @@ func InitCA(overwrite bool) error {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Helper: issue a single certificate and key, save to files, return error if any
|
|
|
|
|
func issueSingleCertificate(def CertificateDefinition, overwrite, verbose bool) error {
|
|
|
|
|
func issueSingleCertificate(def CertificateDefinition) error {
|
|
|
|
|
// Validate Name
|
|
|
|
|
|
|
|
|
|
isValidName, err := regexp.MatchString(`^[A-Za-z0-9_-]+$`, def.Name)
|
|
|
|
@@ -536,10 +536,10 @@ func issueSingleCertificate(def CertificateDefinition, overwrite, verbose bool)
|
|
|
|
|
}
|
|
|
|
|
certFile := filepath.Join(CAConfig.Paths.Certificates, basename+".crt.pem")
|
|
|
|
|
keyFile := filepath.Join(CAConfig.Paths.PrivateKeys, basename+".key.pem")
|
|
|
|
|
if err := SavePEM(certFile, certPEM, false, overwrite); err != nil {
|
|
|
|
|
if err := SavePEM(certFile, certPEM, false); err != nil {
|
|
|
|
|
return fmt.Errorf("error saving certificate: %v", err)
|
|
|
|
|
}
|
|
|
|
|
if err := SavePEM(keyFile, keyPEM, true, overwrite); err != nil {
|
|
|
|
|
if err := SavePEM(keyFile, keyPEM, true); err != nil {
|
|
|
|
|
return fmt.Errorf("error saving key: %v", err)
|
|
|
|
|
}
|
|
|
|
|
if verbose {
|
|
|
|
@@ -622,7 +622,7 @@ func ProvisionCertificates(filePath string, overwrite bool, dryRun bool, verbose
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = issueSingleCertificate(certDefs.Certificates[i], overwrite, verbose)
|
|
|
|
|
err = issueSingleCertificate(certDefs.Certificates[i])
|
|
|
|
|
if err != nil {
|
|
|
|
|
fmt.Printf("error: %v\n", err)
|
|
|
|
|
errors++
|
|
|
|
@@ -664,7 +664,7 @@ func IssueCertificate(certDef CertificateDefinition, overwrite bool, dryRun bool
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = issueSingleCertificate(certDef, overwrite, verbose)
|
|
|
|
|
err = issueSingleCertificate(certDef)
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|