Skip to content

Commit

Permalink
fix: controlplane keyusage
Browse files Browse the repository at this point in the history
* kube-apiserver keyusage serverAuth
* kube-scheduler keyusage clientAuth
* kube-controller-manager keyusage clientAuth
* kubeconfig keyusage clientAuth

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
  • Loading branch information
sergelogvinov authored and talos-bot committed Jul 1, 2021
1 parent 3d77266 commit f572105
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
13 changes: 13 additions & 0 deletions internal/app/machined/pkg/controllers/secrets/kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ package secrets
import (
"bytes"
"context"
stdlibx509 "crypto/x509"
"fmt"
"net"
"net/url"
Expand Down Expand Up @@ -201,6 +202,10 @@ func (ctrl *KubernetesController) updateSecrets(k8sRoot *secrets.RootKubernetesS
x509.CommonName("kube-apiserver"),
x509.Organization("kube-master"),
x509.NotAfter(time.Now().Add(KubernetesCertificateValidityDuration)),
x509.KeyUsage(stdlibx509.KeyUsageDigitalSignature|stdlibx509.KeyUsageKeyEncipherment),
x509.ExtKeyUsage([]stdlibx509.ExtKeyUsage{
stdlibx509.ExtKeyUsageServerAuth,
}),
)
if err != nil {
return fmt.Errorf("failed to generate api-server cert: %w", err)
Expand All @@ -212,6 +217,10 @@ func (ctrl *KubernetesController) updateSecrets(k8sRoot *secrets.RootKubernetesS
x509.CommonName(constants.KubernetesAdminCertCommonName),
x509.Organization(constants.KubernetesAdminCertOrganization),
x509.NotAfter(time.Now().Add(KubernetesCertificateValidityDuration)),
x509.KeyUsage(stdlibx509.KeyUsageDigitalSignature|stdlibx509.KeyUsageKeyEncipherment),
x509.ExtKeyUsage([]stdlibx509.ExtKeyUsage{
stdlibx509.ExtKeyUsageClientAuth,
}),
)
if err != nil {
return fmt.Errorf("failed to generate api-server cert: %w", err)
Expand All @@ -227,6 +236,10 @@ func (ctrl *KubernetesController) updateSecrets(k8sRoot *secrets.RootKubernetesS
frontProxy, err := x509.NewKeyPair(aggregatorCA,
x509.CommonName("front-proxy-client"),
x509.NotAfter(time.Now().Add(KubernetesCertificateValidityDuration)),
x509.KeyUsage(stdlibx509.KeyUsageDigitalSignature|stdlibx509.KeyUsageKeyEncipherment),
x509.ExtKeyUsage([]stdlibx509.ExtKeyUsage{
stdlibx509.ExtKeyUsageClientAuth,
}),
)
if err != nil {
return fmt.Errorf("failed to generate aggregator cert: %w", err)
Expand Down
8 changes: 7 additions & 1 deletion internal/pkg/kubeconfig/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
package kubeconfig

import (
stdlibx509 "crypto/x509"
"encoding/base64"
"fmt"
"io"
Expand Down Expand Up @@ -100,7 +101,12 @@ func Generate(in *GenerateInput, out io.Writer) error {
clientCert, err := x509.NewKeyPair(k8sCA,
x509.CommonName(in.CommonName),
x509.Organization(in.Organization),
x509.NotAfter(time.Now().Add(in.CertificateLifetime)))
x509.NotAfter(time.Now().Add(in.CertificateLifetime)),
x509.KeyUsage(stdlibx509.KeyUsageDigitalSignature|stdlibx509.KeyUsageKeyEncipherment),
x509.ExtKeyUsage([]stdlibx509.ExtKeyUsage{
stdlibx509.ExtKeyUsageClientAuth,
}),
)
if err != nil {
return fmt.Errorf("error generating Kubernetes client certificate: %w", err)
}
Expand Down

0 comments on commit f572105

Please sign in to comment.