mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-04 09:49:50 +00:00
Merge pull request #10711 from eparis/self-sign-cert-san
Do not create subject alt dns names for kubelet self signed certs
This commit is contained in:
commit
97baadab46
@ -449,7 +449,11 @@ func (s *APIServer) Run(_ []string) error {
|
|||||||
s.TLSCertFile = path.Join(s.CertDirectory, "apiserver.crt")
|
s.TLSCertFile = path.Join(s.CertDirectory, "apiserver.crt")
|
||||||
s.TLSPrivateKeyFile = path.Join(s.CertDirectory, "apiserver.key")
|
s.TLSPrivateKeyFile = path.Join(s.CertDirectory, "apiserver.key")
|
||||||
// TODO (cjcullen): Is PublicAddress the right address to sign a cert with?
|
// TODO (cjcullen): Is PublicAddress the right address to sign a cert with?
|
||||||
if err := util.GenerateSelfSignedCert(config.PublicAddress.String(), s.TLSCertFile, s.TLSPrivateKeyFile, config.ServiceReadWriteIP); err != nil {
|
alternateIPs := []net.IP{config.ServiceReadWriteIP}
|
||||||
|
alternateDNS := []string{"kubernetes.default.svc", "kubernetes.default", "kubernetes"}
|
||||||
|
// It would be nice to set a fqdn subject alt name, but only the kubelets know, the apiserver is clueless
|
||||||
|
// alternateDNS = append(alternateDNS, "kubernetes.default.svc.CLUSTER.DNS.NAME")
|
||||||
|
if err := util.GenerateSelfSignedCert(config.PublicAddress.String(), s.TLSCertFile, s.TLSPrivateKeyFile, alternateIPs, alternateDNS); err != nil {
|
||||||
glog.Errorf("Unable to generate self signed cert: %v", err)
|
glog.Errorf("Unable to generate self signed cert: %v", err)
|
||||||
} else {
|
} else {
|
||||||
glog.Infof("Using self-signed cert (%s, %s)", s.TLSCertFile, s.TLSPrivateKeyFile)
|
glog.Infof("Using self-signed cert (%s, %s)", s.TLSCertFile, s.TLSPrivateKeyFile)
|
||||||
|
@ -395,7 +395,7 @@ func (s *KubeletServer) InitializeTLS() (*kubelet.TLSOptions, error) {
|
|||||||
if s.TLSCertFile == "" && s.TLSPrivateKeyFile == "" {
|
if s.TLSCertFile == "" && s.TLSPrivateKeyFile == "" {
|
||||||
s.TLSCertFile = path.Join(s.CertDirectory, "kubelet.crt")
|
s.TLSCertFile = path.Join(s.CertDirectory, "kubelet.crt")
|
||||||
s.TLSPrivateKeyFile = path.Join(s.CertDirectory, "kubelet.key")
|
s.TLSPrivateKeyFile = path.Join(s.CertDirectory, "kubelet.key")
|
||||||
if err := util.GenerateSelfSignedCert(nodeutil.GetHostname(s.HostnameOverride), s.TLSCertFile, s.TLSPrivateKeyFile, nil); err != nil {
|
if err := util.GenerateSelfSignedCert(nodeutil.GetHostname(s.HostnameOverride), s.TLSCertFile, s.TLSPrivateKeyFile, nil, nil); err != nil {
|
||||||
return nil, fmt.Errorf("unable to generate self signed cert: %v", err)
|
return nil, fmt.Errorf("unable to generate self signed cert: %v", err)
|
||||||
}
|
}
|
||||||
glog.V(4).Infof("Using self-signed cert (%s, %s)", s.TLSCertFile, s.TLSPrivateKeyFile)
|
glog.V(4).Infof("Using self-signed cert (%s, %s)", s.TLSCertFile, s.TLSPrivateKeyFile)
|
||||||
|
@ -35,10 +35,11 @@ import (
|
|||||||
|
|
||||||
// GenerateSelfSignedCert creates a self-signed certificate and key for the given host.
|
// GenerateSelfSignedCert creates a self-signed certificate and key for the given host.
|
||||||
// Host may be an IP or a DNS name
|
// Host may be an IP or a DNS name
|
||||||
|
// You may also specify additional subject alt names (either ip or dns names) for the certificate
|
||||||
// The certificate will be created with file mode 0644. The key will be created with file mode 0600.
|
// The certificate will be created with file mode 0644. The key will be created with file mode 0600.
|
||||||
// If the certificate or key files already exist, they will be overwritten.
|
// If the certificate or key files already exist, they will be overwritten.
|
||||||
// Any parent directories of the certPath or keyPath will be created as needed with file mode 0755.
|
// Any parent directories of the certPath or keyPath will be created as needed with file mode 0755.
|
||||||
func GenerateSelfSignedCert(host, certPath, keyPath string, ServiceReadWriteIP net.IP) error {
|
func GenerateSelfSignedCert(host, certPath, keyPath string, alternateIPs []net.IP, alternateDNS []string) error {
|
||||||
priv, err := rsa.GenerateKey(rand.Reader, 2048)
|
priv, err := rsa.GenerateKey(rand.Reader, 2048)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -63,14 +64,8 @@ func GenerateSelfSignedCert(host, certPath, keyPath string, ServiceReadWriteIP n
|
|||||||
template.DNSNames = append(template.DNSNames, host)
|
template.DNSNames = append(template.DNSNames, host)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ServiceReadWriteIP != nil {
|
template.IPAddresses = append(template.IPAddresses, alternateIPs...)
|
||||||
template.IPAddresses = append(template.IPAddresses, ServiceReadWriteIP)
|
template.DNSNames = append(template.DNSNames, alternateDNS...)
|
||||||
}
|
|
||||||
// It would be nice to have the next line, but only the kubelets know the fqdn, the apiserver is clueless
|
|
||||||
// template.DNSNames = append(template.DNSNames, "kubernetes.default.svc.CLUSTER.DNS.NAME")
|
|
||||||
template.DNSNames = append(template.DNSNames, "kubernetes.default.svc")
|
|
||||||
template.DNSNames = append(template.DNSNames, "kubernetes.default")
|
|
||||||
template.DNSNames = append(template.DNSNames, "kubernetes")
|
|
||||||
|
|
||||||
derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, &priv.PublicKey, priv)
|
derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, &priv.PublicKey, priv)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user