Removes wrong secret enqueing and improve the Fake Cert generation

This commit is contained in:
Ricardo Pchevuzinske Katz 2017-03-06 16:29:33 -03:00
parent 6c1b45a663
commit 51235a38e8
3 changed files with 11 additions and 28 deletions

View file

@ -43,28 +43,9 @@ func (ic *GenericController) syncSecret(k interface{}) error {
return fmt.Errorf("deferring sync till endpoints controller has synced") return fmt.Errorf("deferring sync till endpoints controller has synced")
} }
// check if the default certificate is configured var key string
key := fmt.Sprintf("default/%v", defServerName)
_, exists := ic.sslCertTracker.Get(key)
var cert *ingress.SSLCert var cert *ingress.SSLCert
var err error var err error
if !exists {
if ic.cfg.DefaultSSLCertificate != "" {
cert, err = ic.getPemCertificate(ic.cfg.DefaultSSLCertificate)
if err != nil {
return err
}
} else {
defCert, defKey := ssl.GetFakeSSLCert()
cert, err = ssl.AddOrUpdateCertAndKey("default-fake-certificate", defCert, defKey, []byte{})
if err != nil {
return nil
}
}
cert.Name = defServerName
cert.Namespace = api.NamespaceDefault
ic.sslCertTracker.Add(key, cert)
}
key = k.(string) key = k.(string)

View file

@ -838,26 +838,27 @@ func (ic *GenericController) createServers(data []interface{},
CookiePath: bdef.ProxyCookiePath, CookiePath: bdef.ProxyCookiePath,
} }
// This adds the Default Certificate to Default Backend and also for vhosts missing the secret // This adds the Default Certificate to Default Backend (or generates a new self signed one)
var defaultPemFileName, defaultPemSHA string var defaultPemFileName, defaultPemSHA string
defaultCertificate, err := ic.getPemCertificate(ic.cfg.DefaultSSLCertificate)
// If no default Certificate was supplied, tries to generate a new dumb one
if err != nil {
var cert *ingress.SSLCert
// Tries to fetch the default Certificate. If it does not exists, generate a new self signed one.
defaultCertificate, err := ic.getPemCertificate(ic.cfg.DefaultSSLCertificate)
if err != nil {
// This means the Default Secret does not exists, so we will create a new one.
fakeCertificate := "default-fake-certificate" fakeCertificate := "default-fake-certificate"
fakeCertificatePath := fmt.Sprintf("%v/%v.pem", ingress.DefaultSSLDirectory, fakeCertificate) fakeCertificatePath := fmt.Sprintf("%v/%v.pem", ingress.DefaultSSLDirectory, fakeCertificate)
// Only generates a new certificate if it doesn't exists physically // Only generates a new certificate if it doesn't exists physically
_, err := os.Stat(fakeCertificatePath) _, err := os.Stat(fakeCertificatePath)
if err != nil { if err != nil {
glog.V(3).Infof("No Default SSL Certificate found. Generating a new one")
defCert, defKey := ssl.GetFakeSSLCert() defCert, defKey := ssl.GetFakeSSLCert()
cert, err = ssl.AddOrUpdateCertAndKey(fakeCertificate, defCert, defKey, []byte{}) defaultCertificate, err = ssl.AddOrUpdateCertAndKey(fakeCertificate, defCert, defKey, []byte{})
if err != nil { if err != nil {
glog.Fatalf("Error generating self signed certificate: %v", err) glog.Fatalf("Error generating self signed certificate: %v", err)
} }
defaultPemFileName = cert.PemFileName defaultPemFileName = defaultCertificate.PemFileName
defaultPemSHA = cert.PemSHA defaultPemSHA = defaultCertificate.PemSHA
} else { } else {
defaultPemFileName = fakeCertificatePath defaultPemFileName = fakeCertificatePath
defaultPemSHA = ssl.PemSHA1(fakeCertificatePath) defaultPemSHA = ssl.PemSHA1(fakeCertificatePath)

View file

@ -78,6 +78,7 @@ func AddOrUpdateCertAndKey(name string, cert, key, ca []byte) (*ingress.SSLCert,
// If the file does not start with 'BEGIN CERTIFICATE' it's invalid and must not be used. // If the file does not start with 'BEGIN CERTIFICATE' it's invalid and must not be used.
if pemBlock.Type != "CERTIFICATE" { if pemBlock.Type != "CERTIFICATE" {
_ = os.Remove(tempPemFile.Name())
return nil, fmt.Errorf("Certificate %v contains invalid data, and must be created with 'kubectl create secret tls'", name) return nil, fmt.Errorf("Certificate %v contains invalid data, and must be created with 'kubectl create secret tls'", name)
} }