Unterstützung für die Verbesserung dieser Seite beitragen
Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.
Sicherung von Workloads mit Kubernetes-Zertifikaten
Die Kubernetes-Zertifikats-API automatisiert die Bereitstellung von X.509CertificateSigningRequest (CSR)-Ressource verwenden, um anzufordern, dass ein benannter Unterzeichner das Zertifikat signiert. Ihre Anträge werden entweder genehmigt oder abgelehnt, bevor sie signiert werden. Kubernetes unterstützt sowohl integrierte Unterzeichner als auch benutzerdefinierte Unterzeichner mit klar definierten Verhaltensweisen. Auf diese Weise können Kunden vorhersehen, was mit ihren CSRs passiert. Weitere Informationen zur Zertifikatsignatur finden Sie unter Signieren von Anforderungen
Einer der integrierten Unterzeichner ist kubernetes.io/legacy-unknown. Die v1beta1-API der CSR-Ressource berücksichtigte diesen Unterzeichnertyp „legacy-unknown“. Die stabile v1-API von CSR lässt jedoch nicht zu, dass signerName auf kubernetes.io/legacy-unknown festgelegt wird.
Wenn Sie Amazon EKS CA zum Generieren von Zertifikaten verwenden möchten, müssen Sie einen benutzerdefinierten Unterzeichner verwenden. Um die CSR-v1-API-Version zu verwenden und ein neues Zertifikat zu generieren, müssen Sie alle vorhandenen Manifeste und API-Clients migrieren. Bestehende Zertifikate, die mit der vorhandenen v1beta1-API erstellt wurden, sind gültig und funktionieren, bis sie ablaufen. Diese umfasst die folgenden Funktionen:
-
Vertrauensverteilung: keine. Es gibt kein Standardvertrauen oder eine Standardverteilung für diesen Unterzeichner in einem Kubernetes-Cluster.
-
Zulässige Themen: beliebig
-
Zulässige x509-Erweiterungen: Berücksichtigt SubjectAltName und Schlüsselnutzungserweiterungen und verwirft andere Erweiterungen
-
Zulässige Schlüsselnutzung: Darf keine anderen Nutzungen als [„Schlüsselverschlüsselung“, „digitale Signatur“, „Serverauth“] enthalten
Anmerkung
Das Signieren von Clientzertifikaten wird nicht unterstützt.
-
Ablauf/Zertifikatslebensdauer: 1 Jahr (Standard und Maximum)
-
CA-Bit zulässig/unzulässig: unzulässig
Beispiel CSR-Erstellung mit signerName
Diese Schritte veranschaulichen, wie Sie ein Bereitstellungszertifikat für DNS-Namen myserver.default.svc mit signerName: beta.eks.amazonaws.com/app-serving erstellen. Verwenden Sie dies als Leitfaden für Ihre eigene Umgebung.
-
Führen Sie den Befehl
openssl genrsa -out myserver.key 2048aus, um einen privaten RSA-Schlüssel zu erzeugen.openssl genrsa -out myserver.key 2048 -
Führen Sie den folgenden Befehl aus, um eine Zertifikatsanforderung zu erstellen.
openssl req -new -key myserver.key -out myserver.csr -subj "/CN=myserver.default.svc" -
Generieren Sie einen
base64-Wert für die CSR-Variablen für die Verwendung in einem späteren Schritt.base_64=$(cat myserver.csr | base64 -w 0 | tr -d " ") -
Führen Sie den folgenden Befehl aus, um eine Datei mit dem Namen
mycsr.yamlzu erstellen. Im folgenden Beispiel istbeta.eks.amazonaws.com/app-servingdersignerName.cat >mycsr.yaml <<EOF apiVersion: certificates.k8s.io/v1 kind: CertificateSigningRequest metadata: name: myserver spec: request: $base_64 signerName: beta.eks.amazonaws.com/app-serving usages: - digital signature - key encipherment - server auth EOF -
Reichen Sie die CSR ein.
kubectl apply -f mycsr.yaml -
Genehmigen Sie das Bereitstellungszertifikat.
kubectl certificate approve myserver -
Stellen Sie sicher, dass das Zertifikat ausgestellt wurde.
kubectl get csr myserverEine Beispielausgabe sieht wie folgt aus.
NAME AGE SIGNERNAME REQUESTOR CONDITION myserver 3m20s beta.eks.amazonaws.com/app-serving kubernetes-admin Approved,Issued -
Exportieren Sie das ausgestellte Zertifikat.
kubectl get csr myserver -o jsonpath='{.status.certificate}'| base64 -d > myserver.crt