keeping old but still valid CA certs on renewal
This commit is contained in:
		@ -2,7 +2,9 @@ package main
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/cloudflare/cfssl/helpers"
 | 
				
			||||||
	"github.com/cloudflare/cfssl/log"
 | 
						"github.com/cloudflare/cfssl/log"
 | 
				
			||||||
	restful "github.com/emicklei/go-restful"
 | 
						restful "github.com/emicklei/go-restful"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@ -55,11 +57,22 @@ func getUsableClusterCA(cluster, name string) (ca CA, err error) {
 | 
				
			|||||||
	if checkErr != nil {
 | 
						if checkErr != nil {
 | 
				
			||||||
		log.Infof("cluster %s: CA %s: regenerating certificate: %v", cluster, name, checkErr)
 | 
							log.Infof("cluster %s: CA %s: regenerating certificate: %v", cluster, name, checkErr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							prevCerts, _ := helpers.ParseCertificatesPEM(ca.Cert)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		err = ca.RenewCert()
 | 
							err = ca.RenewCert()
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			err = fmt.Errorf("renew: %w", err)
 | 
								err = fmt.Errorf("renew: %w", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							now := time.Now()
 | 
				
			||||||
 | 
							for _, cert := range prevCerts {
 | 
				
			||||||
 | 
								if cert.NotAfter.After(now) {
 | 
				
			||||||
 | 
									continue
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								certPEM := helpers.EncodeCertificatePEM(cert)
 | 
				
			||||||
 | 
								ca.Cert = append(ca.Cert, certPEM...)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		err = clusterCAs.Put(key, ca)
 | 
							err = clusterCAs.Put(key, ca)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user