@@ -206,15 +206,33 @@ Kubernetes provides built-in signers that each have a well-known `signerName`:
206
206
of the ` --cluster-signing-duration ` option or, if specified, the ` spec.expirationSeconds ` field of the CSR object.
207
207
1 . CA bit allowed/disallowed - not allowed.
208
208
209
- The kube-controller-manager implements [ control plane signing] ( #signer-control-plane ) for each of the built in
210
- signers. Failures for all of these are only reported in kube-controller-manager logs.
209
+ 1 . ` kubernetes.io/kube-apiserver-serving ` : signs certificates that can be used to verify kube-apiserver serving
210
+ certificates. Signing and approval are handled outside kube-controller-manager.
211
+ - {{< feature-state feature_gate_name="ClusterTrustBundle" >}}
212
+ 1 . Trust distribution: signed certificates are used by the kube-apiserver for TLS
213
+ server authentication. The CA bundle is distributed using a ClusterTrustBundle object
214
+ identifiable by the ` kubernetes.io/kube-apiserver-serving ` signer name.
215
+ 1 . Permitted subjects - "Subject" itself is deprecated for TLS server authentication by RFC2818. However,
216
+ it should still follow the same rules on DNS/IP {{< glossary_tooltip text="SANs" term_id="san" >}}
217
+ from the "Permitted x509 extensions" section below.
218
+ 1 . Permitted x509 extensions - honors subjectAltName and key usage extensions. At
219
+ least one DNS or IP subjectAltName must be present. The SAN DNS/IP of the certificates
220
+ must resolve/point to kube-apiserver's hostname/IP.
221
+ 1 . Permitted key usages - [ "key encipherment", "digital signature", "server auth"] or [ "digital signature", "server auth"] .
222
+ 1 . Expiration/certificate lifetime - The recommended maximum lifetime is 30 days.
223
+ 1 . CA bit allowed/disallowed - not recommended by the Kubernetes project.
211
224
212
225
{{< note >}}
213
226
The ` spec.expirationSeconds ` field was added in Kubernetes v1.22. Earlier versions of Kubernetes do not honor this field.
214
227
Kubernetes API servers prior to v1.22 will silently drop this field when the object is created.
215
228
{{< /note >}}
216
229
217
- Distribution of trust happens out of band for these signers. Any trust outside of those described above are strictly
230
+ The kube-controller-manager implements [ control plane signing] ( #signer-control-plane ) for each of the built in
231
+ signers except for ` kubernetes.io/kube-apiserver-serving ` . Failures for all of these are only reported in kube-controller-manager logs.
232
+ Signing of certificates in the trust domain of the ` kubernetes.io/kube-apiserver-serving ` signer is in full control of
233
+ the cluster administrator(s).
234
+
235
+ Any trust outside of the above described cases is strictly
218
236
coincidental. For instance, some distributions may honor ` kubernetes.io/legacy-unknown ` as client certificates for the
219
237
kube-apiserver, but this is not a standard.
220
238
None of these usages are related to ServiceAccount token secrets ` .data[ca.crt] ` in any way. That CA bundle is only
@@ -623,4 +641,4 @@ kubectl config use-context myuser
623
641
* For details of X.509 itself, refer to [RFC 5280](https://tools.ietf.org/html/rfc5280#section-3.1) section 3.1
624
642
* For information on the syntax of PKCS#10 certificate signing requests, refer to [RFC 2986](https://tools.ietf.org/html/rfc2986)
625
643
* Read about the ClusterTrustBundle API:
626
- * {{< page-api-reference kind="ClusterTrustBundle" >}}
644
+ * {{< page-api-reference kind="ClusterTrustBundle" >}}
0 commit comments