Class CertificateSigningRequestSpec

  • All Implemented Interfaces:
    com.marcnuri.yakc.model.Model

    public class CertificateSigningRequestSpec
    extends java.lang.Object
    implements com.marcnuri.yakc.model.Model
    CertificateSigningRequestSpec contains the certificate request.
    • Constructor Summary

      Constructors 
      Constructor Description
      CertificateSigningRequestSpec()  
      CertificateSigningRequestSpec​(java.lang.Number expirationSeconds, java.util.Map<java.lang.String,​java.util.List<java.lang.String>> extra, java.util.List<java.lang.String> groups, @NonNull java.lang.String request, @NonNull java.lang.String signerName, java.lang.String uid, java.util.List<java.lang.String> usages, java.lang.String username)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static CertificateSigningRequestSpec.Builder builder()  
      protected boolean canEqual​(java.lang.Object other)  
      boolean equals​(java.lang.Object o)  
      java.lang.Number getExpirationSeconds()
      expirationSeconds is the requested duration of validity of the issued certificate.
      java.util.Map<java.lang.String,​java.util.List<java.lang.String>> getExtra()
      extra contains extra attributes of the user that created the CertificateSigningRequest.
      java.util.List<java.lang.String> getGroups()
      groups contains group membership of the user that created the CertificateSigningRequest.
      @NonNull java.lang.String getRequest()
      request contains an x509 certificate signing request encoded in a "CERTIFICATE REQUEST" PEM block.
      @NonNull java.lang.String getSignerName()
      signerName indicates the requested signer, and is a qualified name.
      java.lang.String getUid()
      uid contains the uid of the user that created the CertificateSigningRequest.
      java.util.List<java.lang.String> getUsages()
      usages specifies a set of key usages requested in the issued certificate.
      java.lang.String getUsername()
      username contains the name of the user that created the CertificateSigningRequest.
      int hashCode()  
      void setExpirationSeconds​(java.lang.Number expirationSeconds)
      expirationSeconds is the requested duration of validity of the issued certificate.
      void setExtra​(java.util.Map<java.lang.String,​java.util.List<java.lang.String>> extra)
      extra contains extra attributes of the user that created the CertificateSigningRequest.
      void setGroups​(java.util.List<java.lang.String> groups)
      groups contains group membership of the user that created the CertificateSigningRequest.
      void setRequest​(@NonNull java.lang.String request)
      request contains an x509 certificate signing request encoded in a "CERTIFICATE REQUEST" PEM block.
      void setSignerName​(@NonNull java.lang.String signerName)
      signerName indicates the requested signer, and is a qualified name.
      void setUid​(java.lang.String uid)
      uid contains the uid of the user that created the CertificateSigningRequest.
      void setUsages​(java.util.List<java.lang.String> usages)
      usages specifies a set of key usages requested in the issued certificate.
      void setUsername​(java.lang.String username)
      username contains the name of the user that created the CertificateSigningRequest.
      CertificateSigningRequestSpec.Builder toBuilder()  
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • CertificateSigningRequestSpec

        public CertificateSigningRequestSpec​(java.lang.Number expirationSeconds,
                                             java.util.Map<java.lang.String,​java.util.List<java.lang.String>> extra,
                                             java.util.List<java.lang.String> groups,
                                             @NonNull
                                             @NonNull java.lang.String request,
                                             @NonNull
                                             @NonNull java.lang.String signerName,
                                             java.lang.String uid,
                                             java.util.List<java.lang.String> usages,
                                             java.lang.String username)
      • CertificateSigningRequestSpec

        public CertificateSigningRequestSpec()
    • Method Detail

      • getExpirationSeconds

        public java.lang.Number getExpirationSeconds()
        expirationSeconds is the requested duration of validity of the issued certificate. The certificate signer may issue a certificate with a different validity duration so a client must check the delta between the notBefore and and notAfter fields in the issued certificate to determine the actual duration.


        The v1.22+ in-tree implementations of the well-known Kubernetes signers will honor this field as long as the requested duration is not greater than the maximum duration they will honor per the --cluster-signing-duration CLI flag to the Kubernetes controller manager.


        Certificate signers may not honor this field for various reasons:


        1. Old signer that is unaware of the field (such as the in-tree

        implementations prior to v1.22)

        2. Signer whose configured maximum is shorter than the requested duration

        3. Signer whose configured minimum is longer than the requested duration


        The minimum valid value for expirationSeconds is 600, i.e. 10 minutes.

      • getExtra

        public java.util.Map<java.lang.String,​java.util.List<java.lang.String>> getExtra()
        extra contains extra attributes of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.
      • getGroups

        public java.util.List<java.lang.String> getGroups()
        groups contains group membership of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.
      • getRequest

        @NonNull
        public @NonNull java.lang.String getRequest()
        request contains an x509 certificate signing request encoded in a "CERTIFICATE REQUEST" PEM block. When serialized as JSON or YAML, the data is additionally base64-encoded.
      • getSignerName

        @NonNull
        public @NonNull java.lang.String getSignerName()
        signerName indicates the requested signer, and is a qualified name.


        List/watch requests for CertificateSigningRequests can filter on this field using a "spec.signerName=NAME" fieldSelector.


        Well-known Kubernetes signers are:

        1. "kubernetes.io/kube-apiserver-client": issues client certificates that can be used to authenticate to kube-apiserver.

        Requests for this signer are never auto-approved by kube-controller-manager, can be issued by the "csrsigning" controller in kube-controller-manager.

        2. "kubernetes.io/kube-apiserver-client-kubelet": issues client certificates that kubelets use to authenticate to kube-apiserver.

        Requests for this signer can be auto-approved by the "csrapproving" controller in kube-controller-manager, and can be issued by the "csrsigning" controller in kube-controller-manager.

        3. "kubernetes.io/kubelet-serving" issues serving certificates that kubelets use to serve TLS endpoints, which kube-apiserver can connect to securely.

        Requests for this signer are never auto-approved by kube-controller-manager, and can be issued by the "csrsigning" controller in kube-controller-manager.


        More details are available at https://k8s.io/docs/reference/access-authn-authz/certificate-signing-requests/#kubernetes-signers


        Custom signerNames can also be specified. The signer defines:

        1. Trust distribution: how trust (CA bundles) are distributed.

        2. Permitted subjects: and behavior when a disallowed subject is requested.

        3. Required, permitted, or forbidden x509 extensions in the request (including whether subjectAltNames are allowed, which types, restrictions on allowed values) and behavior when a disallowed extension is requested.

        4. Required, permitted, or forbidden key usages / extended key usages.

        5. Expiration/certificate lifetime: whether it is fixed by the signer, configurable by the admin.

        6. Whether or not requests for CA certificates are allowed.

      • getUid

        public java.lang.String getUid()
        uid contains the uid of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.
      • getUsages

        public java.util.List<java.lang.String> getUsages()
        usages specifies a set of key usages requested in the issued certificate.


        Requests for TLS client certificates typically request: "digital signature", "key encipherment", "client auth".


        Requests for TLS serving certificates typically request: "key encipherment", "digital signature", "server auth".


        Valid values are:

        "signing", "digital signature", "content commitment",

        "key encipherment", "key agreement", "data encipherment",

        "cert sign", "crl sign", "encipher only", "decipher only", "any",

        "server auth", "client auth",

        "code signing", "email protection", "s/mime",

        "ipsec end system", "ipsec tunnel", "ipsec user",

        "timestamping", "ocsp signing", "microsoft sgc", "netscape sgc"

      • getUsername

        public java.lang.String getUsername()
        username contains the name of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.
      • setExpirationSeconds

        public void setExpirationSeconds​(java.lang.Number expirationSeconds)
        expirationSeconds is the requested duration of validity of the issued certificate. The certificate signer may issue a certificate with a different validity duration so a client must check the delta between the notBefore and and notAfter fields in the issued certificate to determine the actual duration.


        The v1.22+ in-tree implementations of the well-known Kubernetes signers will honor this field as long as the requested duration is not greater than the maximum duration they will honor per the --cluster-signing-duration CLI flag to the Kubernetes controller manager.


        Certificate signers may not honor this field for various reasons:


        1. Old signer that is unaware of the field (such as the in-tree

        implementations prior to v1.22)

        2. Signer whose configured maximum is shorter than the requested duration

        3. Signer whose configured minimum is longer than the requested duration


        The minimum valid value for expirationSeconds is 600, i.e. 10 minutes.

      • setExtra

        public void setExtra​(java.util.Map<java.lang.String,​java.util.List<java.lang.String>> extra)
        extra contains extra attributes of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.
      • setGroups

        public void setGroups​(java.util.List<java.lang.String> groups)
        groups contains group membership of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.
      • setRequest

        public void setRequest​(@NonNull
                               @NonNull java.lang.String request)
        request contains an x509 certificate signing request encoded in a "CERTIFICATE REQUEST" PEM block. When serialized as JSON or YAML, the data is additionally base64-encoded.
      • setSignerName

        public void setSignerName​(@NonNull
                                  @NonNull java.lang.String signerName)
        signerName indicates the requested signer, and is a qualified name.


        List/watch requests for CertificateSigningRequests can filter on this field using a "spec.signerName=NAME" fieldSelector.


        Well-known Kubernetes signers are:

        1. "kubernetes.io/kube-apiserver-client": issues client certificates that can be used to authenticate to kube-apiserver.

        Requests for this signer are never auto-approved by kube-controller-manager, can be issued by the "csrsigning" controller in kube-controller-manager.

        2. "kubernetes.io/kube-apiserver-client-kubelet": issues client certificates that kubelets use to authenticate to kube-apiserver.

        Requests for this signer can be auto-approved by the "csrapproving" controller in kube-controller-manager, and can be issued by the "csrsigning" controller in kube-controller-manager.

        3. "kubernetes.io/kubelet-serving" issues serving certificates that kubelets use to serve TLS endpoints, which kube-apiserver can connect to securely.

        Requests for this signer are never auto-approved by kube-controller-manager, and can be issued by the "csrsigning" controller in kube-controller-manager.


        More details are available at https://k8s.io/docs/reference/access-authn-authz/certificate-signing-requests/#kubernetes-signers


        Custom signerNames can also be specified. The signer defines:

        1. Trust distribution: how trust (CA bundles) are distributed.

        2. Permitted subjects: and behavior when a disallowed subject is requested.

        3. Required, permitted, or forbidden x509 extensions in the request (including whether subjectAltNames are allowed, which types, restrictions on allowed values) and behavior when a disallowed extension is requested.

        4. Required, permitted, or forbidden key usages / extended key usages.

        5. Expiration/certificate lifetime: whether it is fixed by the signer, configurable by the admin.

        6. Whether or not requests for CA certificates are allowed.

      • setUid

        public void setUid​(java.lang.String uid)
        uid contains the uid of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.
      • setUsages

        public void setUsages​(java.util.List<java.lang.String> usages)
        usages specifies a set of key usages requested in the issued certificate.


        Requests for TLS client certificates typically request: "digital signature", "key encipherment", "client auth".


        Requests for TLS serving certificates typically request: "key encipherment", "digital signature", "server auth".


        Valid values are:

        "signing", "digital signature", "content commitment",

        "key encipherment", "key agreement", "data encipherment",

        "cert sign", "crl sign", "encipher only", "decipher only", "any",

        "server auth", "client auth",

        "code signing", "email protection", "s/mime",

        "ipsec end system", "ipsec tunnel", "ipsec user",

        "timestamping", "ocsp signing", "microsoft sgc", "netscape sgc"

      • setUsername

        public void setUsername​(java.lang.String username)
        username contains the name of the user that created the CertificateSigningRequest. Populated by the API server on creation and immutable.
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • canEqual

        protected boolean canEqual​(java.lang.Object other)
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object