Add field FileSHA in BasicDigest struct
This commit is contained in:
parent
65e8cecbac
commit
98a95282f9
4 changed files with 31 additions and 19 deletions
19
core/pkg/file/file.go
Normal file
19
core/pkg/file/file.go
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
package file
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/sha1"
|
||||||
|
"encoding/hex"
|
||||||
|
"io/ioutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SHA1 returns the SHA1 of a file.
|
||||||
|
func SHA1(filename string) string {
|
||||||
|
hasher := sha1.New()
|
||||||
|
s, err := ioutil.ReadFile(filename)
|
||||||
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
hasher.Write(s)
|
||||||
|
return hex.EncodeToString(hasher.Sum(nil))
|
||||||
|
}
|
|
@ -27,6 +27,7 @@ import (
|
||||||
api "k8s.io/api/core/v1"
|
api "k8s.io/api/core/v1"
|
||||||
extensions "k8s.io/api/extensions/v1beta1"
|
extensions "k8s.io/api/extensions/v1beta1"
|
||||||
|
|
||||||
|
"k8s.io/ingress/core/pkg/file"
|
||||||
"k8s.io/ingress/core/pkg/ingress/annotations/parser"
|
"k8s.io/ingress/core/pkg/ingress/annotations/parser"
|
||||||
ing_errors "k8s.io/ingress/core/pkg/ingress/errors"
|
ing_errors "k8s.io/ingress/core/pkg/ingress/errors"
|
||||||
"k8s.io/ingress/core/pkg/ingress/resolver"
|
"k8s.io/ingress/core/pkg/ingress/resolver"
|
||||||
|
@ -51,6 +52,7 @@ type BasicDigest struct {
|
||||||
Realm string `json:"realm"`
|
Realm string `json:"realm"`
|
||||||
File string `json:"file"`
|
File string `json:"file"`
|
||||||
Secured bool `json:"secured"`
|
Secured bool `json:"secured"`
|
||||||
|
FileSHA string `json:"fileSha"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Equal tests for equality between two BasicDigest types
|
// Equal tests for equality between two BasicDigest types
|
||||||
|
@ -73,6 +75,9 @@ func (bd1 *BasicDigest) Equal(bd2 *BasicDigest) bool {
|
||||||
if bd1.Secured != bd2.Secured {
|
if bd1.Secured != bd2.Secured {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
if bd1.FileSHA != bd2.FileSHA {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -140,6 +145,7 @@ func (a auth) Parse(ing *extensions.Ingress) (interface{}, error) {
|
||||||
Realm: realm,
|
Realm: realm,
|
||||||
File: passFile,
|
File: passFile,
|
||||||
Secured: true,
|
Secured: true,
|
||||||
|
FileSHA: file.SHA1(passFile),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,7 @@ import (
|
||||||
"k8s.io/client-go/util/flowcontrol"
|
"k8s.io/client-go/util/flowcontrol"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
|
"k8s.io/ingress/core/pkg/file"
|
||||||
"k8s.io/ingress/core/pkg/ingress"
|
"k8s.io/ingress/core/pkg/ingress"
|
||||||
"k8s.io/ingress/core/pkg/ingress/annotations/class"
|
"k8s.io/ingress/core/pkg/ingress/annotations/class"
|
||||||
"k8s.io/ingress/core/pkg/ingress/annotations/healthcheck"
|
"k8s.io/ingress/core/pkg/ingress/annotations/healthcheck"
|
||||||
|
@ -982,7 +983,7 @@ func (ic *GenericController) createServers(data []interface{},
|
||||||
defaultPemSHA = defaultCertificate.PemSHA
|
defaultPemSHA = defaultCertificate.PemSHA
|
||||||
} else {
|
} else {
|
||||||
defaultPemFileName = fakeCertificatePath
|
defaultPemFileName = fakeCertificatePath
|
||||||
defaultPemSHA = ssl.PemSHA1(fakeCertificatePath)
|
defaultPemSHA = file.SHA1(fakeCertificatePath)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
defaultPemFileName = defaultCertificate.PemFileName
|
defaultPemFileName = defaultCertificate.PemFileName
|
||||||
|
|
|
@ -19,12 +19,10 @@ package ssl
|
||||||
import (
|
import (
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
"crypto/rsa"
|
"crypto/rsa"
|
||||||
"crypto/sha1"
|
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
"crypto/x509/pkix"
|
"crypto/x509/pkix"
|
||||||
"encoding/asn1"
|
"encoding/asn1"
|
||||||
"encoding/hex"
|
|
||||||
"encoding/pem"
|
"encoding/pem"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -38,6 +36,7 @@ import (
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
|
"k8s.io/ingress/core/pkg/file"
|
||||||
"k8s.io/ingress/core/pkg/ingress"
|
"k8s.io/ingress/core/pkg/ingress"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -163,7 +162,7 @@ func AddOrUpdateCertAndKey(name string, cert, key, ca []byte) (*ingress.SSLCert,
|
||||||
return &ingress.SSLCert{
|
return &ingress.SSLCert{
|
||||||
CAFileName: pemFileName,
|
CAFileName: pemFileName,
|
||||||
PemFileName: pemFileName,
|
PemFileName: pemFileName,
|
||||||
PemSHA: PemSHA1(pemFileName),
|
PemSHA: file.SHA1(pemFileName),
|
||||||
CN: cn.List(),
|
CN: cn.List(),
|
||||||
ExpireTime: pemCert.NotAfter,
|
ExpireTime: pemCert.NotAfter,
|
||||||
}, nil
|
}, nil
|
||||||
|
@ -171,7 +170,7 @@ func AddOrUpdateCertAndKey(name string, cert, key, ca []byte) (*ingress.SSLCert,
|
||||||
|
|
||||||
return &ingress.SSLCert{
|
return &ingress.SSLCert{
|
||||||
PemFileName: pemFileName,
|
PemFileName: pemFileName,
|
||||||
PemSHA: PemSHA1(pemFileName),
|
PemSHA: file.SHA1(pemFileName),
|
||||||
CN: cn.List(),
|
CN: cn.List(),
|
||||||
ExpireTime: pemCert.NotAfter,
|
ExpireTime: pemCert.NotAfter,
|
||||||
}, nil
|
}, nil
|
||||||
|
@ -273,7 +272,7 @@ func AddCertAuth(name string, ca []byte) (*ingress.SSLCert, error) {
|
||||||
return &ingress.SSLCert{
|
return &ingress.SSLCert{
|
||||||
CAFileName: caFileName,
|
CAFileName: caFileName,
|
||||||
PemFileName: caFileName,
|
PemFileName: caFileName,
|
||||||
PemSHA: PemSHA1(caFileName),
|
PemSHA: file.SHA1(caFileName),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -325,19 +324,6 @@ func AddOrUpdateDHParam(name string, dh []byte) (string, error) {
|
||||||
return pemFileName, nil
|
return pemFileName, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// PemSHA1 returns the SHA1 of a pem file. This is used to
|
|
||||||
// reload NGINX in case a secret with a SSL certificate changed.
|
|
||||||
func PemSHA1(filename string) string {
|
|
||||||
hasher := sha1.New()
|
|
||||||
s, err := ioutil.ReadFile(filename)
|
|
||||||
if err != nil {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
hasher.Write(s)
|
|
||||||
return hex.EncodeToString(hasher.Sum(nil))
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetFakeSSLCert creates a Self Signed Certificate
|
// GetFakeSSLCert creates a Self Signed Certificate
|
||||||
// Based in the code https://golang.org/src/crypto/tls/generate_cert.go
|
// Based in the code https://golang.org/src/crypto/tls/generate_cert.go
|
||||||
func GetFakeSSLCert() ([]byte, []byte) {
|
func GetFakeSSLCert() ([]byte, []byte) {
|
||||||
|
|
Loading…
Reference in a new issue