@@ -68,6 +68,22 @@ func PrepareSSLCertificates(image string, sslFlags *adm_utils.InstallSSLFlags, t
68
68
return nil
69
69
}
70
70
71
+ func validateCA (image string , sslFlags * adm_utils.InstallSSLFlags , tz string ) error {
72
+ tempDir , cleaner , err := utils .TempDir ()
73
+ defer cleaner ()
74
+ if err != nil {
75
+ return err
76
+ }
77
+ env := map [string ]string {
78
+ "CERT_PASS" : sslFlags .Password ,
79
+ }
80
+
81
+ if err := runSSLContainer (sslValidateCA , tempDir , image , tz , env ); err != nil {
82
+ return utils .Error (err , L ("CA validation failed!" ))
83
+ }
84
+ return nil
85
+ }
86
+
71
87
func prepareServerSSLcertificates (image string , sslFlags * adm_utils.InstallSSLFlags , tz string , fqdn string ) error {
72
88
tempDir , cleaner , err := utils .TempDir ()
73
89
defer cleaner ()
@@ -307,6 +323,10 @@ func generateDatabaseCertificate(image string, sslFlags *adm_utils.InstallSSLFla
307
323
return err
308
324
}
309
325
326
+ if err := validateCA (image , sslFlags , tz ); err != nil {
327
+ return utils .Error (err , L ("Cannot generate database certificate" ))
328
+ }
329
+
310
330
env := map [string ]string {
311
331
"CERT_O" : sslFlags .Org ,
312
332
"CERT_OU" : sslFlags .OU ,
@@ -399,3 +419,17 @@ const sslSetupDatabaseScript = `
399
419
cp /root/ssl-build/reportdb/server.crt /ssl/reportdb.crt
400
420
cp /root/ssl-build/reportdb/server.key /ssl/reportdb.key
401
421
`
422
+ const sslValidateCA = `
423
+ CA_KEY=/root/ssl-build/RHN-ORG-PRIVATE-SSL-KEY
424
+ CA_PASS_FILE=/ssl/ca_pass
425
+ trap "test -f \"$CA_PASS_FILE\" && /bin/rm -f -- \"$CA_PASS_FILE\" " 0 1 2 3 13 15
426
+
427
+ echo "Validating CA..."
428
+ echo "$CERT_PASS" > "$CA_PASS_FILE"
429
+
430
+ test -f $CA_KEY || (echo "CA key is not available" && exit 1)
431
+ test -r "$CA_KEY" || (echo "CA key is not readable" && exit 2)
432
+
433
+ openssl rsa -noout -in "/root/ssl-build/RHN-ORG-PRIVATE-SSL-KEY" -passin "file:$CA_PASS_FILE" || \
434
+ (echo "Wrong CA key password" && exit 3)
435
+ `
0 commit comments