cert-manager 1.0 ื™ืฆื ืœืื•ืจ

ืื ืชืฉืืœื• ืžื”ื ื“ืก ืžื ื•ืกื” ื•ื—ื›ื ืžื” ื”ื•ื ื—ื•ืฉื‘ ืขืœ cert-manager ื•ืœืžื” ื›ื•ืœื ืžืฉืชืžืฉื™ื ื‘ื–ื”, ืื– ื”ืžื•ืžื—ื” ื™ืื ื—, ื™ื—ื‘ืง ืื•ืชื• ื‘ื‘ื™ื˜ื—ื•ืŸ ื•ื™ื’ื™ื“ ื‘ืขื™ื™ืคื•ืช: "ื›ื•ืœื ืžืฉืชืžืฉื™ื ื‘ื–ื”, ื›ื™ ืื™ืŸ ื—ืœื•ืคื•ืช ืฉืคื•ื™ื•ืช. ื”ืขื›ื‘ืจื™ื ืฉืœื ื• ื‘ื•ื›ื™ื, ื“ื•ืงืจื™ื, ืื‘ืœ ืžืžืฉื™ื›ื™ื ืœื—ื™ื•ืช ืขื ื”ืงืงื˜ื•ืก ื”ื–ื”. ืœืžื” ืื ื—ื ื• ืื•ื”ื‘ื™ื? ื›ื™ ื–ื” ืขื•ื‘ื“. ืœืžื” ืื ื—ื ื• ืœื ืื•ื”ื‘ื™ื? ื›ื™ ื›ืœ ื”ื–ืžืŸ ื™ื•ืฆืื•ืช ื’ืจืกืื•ืช ื—ื“ืฉื•ืช ื”ืžืฉืชืžืฉื•ืช ื‘ืชื›ื•ื ื•ืช ื—ื“ืฉื•ืช. ื•ืืชื” ืฆืจื™ืš ืœืขื“ื›ืŸ ืืช ื”ืืฉื›ื•ืœ ืฉื•ื‘ ื•ืฉื•ื‘. ื•ื”ื’ืจืกืื•ืช ื”ื™ืฉื ื•ืช ืžืคืกื™ืงื•ืช ืœืขื‘ื•ื“, ื›ื™ ื™ืฉ ืงื•ื ืกืคื™ืจืฆื™ื” ื•ืฉืžืื ื™ื–ื ืžืกืชื•ืจื™ ื’ื“ื•ืœ.

ืื‘ืœ ื”ืžืคืชื—ื™ื ื˜ื•ืขื ื™ื ื–ืืช cert-manager 1.0 ื”ื›ืœ ื™ืฉืชื ื”.

ื”ืื ื ืืžื™ืŸ?

cert-manager 1.0 ื™ืฆื ืœืื•ืจ

Cert-manager ื”ื•ื ื‘ืงืจ ื ื™ื”ื•ืœ ื”ืื™ืฉื•ืจื™ื ื”ืžืงื•ืจื™ ืฉืœ Kubernetes. ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื• ืœื”ื ืคืงืช ืื™ืฉื•ืจื™ื ืžืžืงื•ืจื•ืช ืฉื•ื ื™ื: Let's Encrypt, HashiCorp Vault, Venafi, ื—ืชื™ืžื” ื•ืฆืžื“ื™ ืžืคืชื—ื•ืช ื‘ื—ืชื™ืžื” ืขืฆืžื™ืช. ื–ื” ื’ื ืžืืคืฉืจ ืœืš ืœืฉืžื•ืจ ืžืคืชื—ื•ืช ืžืขื•ื“ื›ื ื™ื ืœืคื™ ืชืืจื™ืš ืชืคื•ื’ื”, ื•ื’ื ืžื ืกื” ืœื—ื“ืฉ ืื•ื˜ื•ืžื˜ื™ืช ืื™ืฉื•ืจื™ื ื‘ื–ืžืŸ ืžื•ื’ื“ืจ ืœืคื ื™ ืฉื”ื ื™ืคื•ื’. Cert-manager ืžื‘ื•ืกืก ืขืœ kube-lego ื•ื”ืฉืชืžืฉ ื’ื ื‘ื›ืžื” ื˜ืจื™ืงื™ื ืžืคืจื•ื™ืงื˜ื™ื ื“ื•ืžื™ื ืื—ืจื™ื ื›ืžื• kube-cert-manager.

ืžื›ืชื‘ื™ ืฉื—ืจื•ืจ

ืขื ื’ืจืกื” 1.0, ืื ื• ืฉืžื™ื ืื•ืช ืืžื•ืŸ ืœืฉืœื•ืฉ ืฉื ื™ื ืฉืœ ืคื™ืชื•ื— ืฉืœ ืคืจื•ื™ืงื˜ ื”-cert-manager. ื‘ืžื”ืœืš ืชืงื•ืคื” ื–ื•, ื”ื•ื ื”ืชืคืชื— ื‘ืื•ืคืŸ ืžืฉืžืขื•ืชื™ ื‘ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื•ื‘ื™ืฆื™ื‘ื•ืช, ืื‘ืœ ื™ื•ืชืจ ืžื›ืœ ื‘ืงื”ื™ืœื”. ื›ื™ื•ื, ืื ื• ืจื•ืื™ื ืื ืฉื™ื ืจื‘ื™ื ืžืฉืชืžืฉื™ื ื‘ื• ื›ื“ื™ ืœืื‘ื˜ื— ืืช ืืฉื›ื•ืœื•ืช ื”-Kubernetes ืฉืœื”ื, ื›ืžื• ื’ื ืœืคืจื•ืก ืื•ืชื• ืœื—ืœืงื™ื ืฉื•ื ื™ื ืฉืœ ื”ืžืขืจื›ืช ื”ืืงื•ืœื•ื’ื™ืช. ื”ืจื‘ื” ื‘ืื’ื™ื ืชื•ืงื ื• ื‘-16 ื”ืžื”ื“ื•ืจื•ืช ื”ืื—ืจื•ื ื•ืช. ื•ืžื” ืฉื”ื™ื” ืฆืจื™ืš ืœื”ื™ืฉื‘ืจ ืฉื‘ื•ืจ. ืžืกืคืจ ื‘ื™ืงื•ืจื™ื ืœืขื‘ื•ื“ื” ืขื ื”-API ืฉื™ืคืจื• ืืช ื”ืื™ื ื˜ืจืืงืฆื™ื” ืฉืœื• ืขื ื”ืžืฉืชืžืฉื™ื. ืคืชืจื ื• 1500 ื‘ืขื™ื•ืช ื‘-GitHub ืขื ืขื•ื“ ื‘ืงืฉื•ืช ืžืฉื™ื›ื” ืž-253 ื—ื‘ืจื™ ืงื”ื™ืœื”.

ืขื ืฉื—ืจื•ืจื• ืฉืœ 1.0, ืื ื• ืžื›ืจื™ื–ื™ื ืจืฉืžื™ืช ืฉ-cert-manager ื”ื•ื ืคืจื•ื™ืงื˜ ื‘ื•ื’ืจ. ืื ื• ื’ื ืžื‘ื˜ื™ื—ื™ื ืœืฉืžื•ืจ ืขืœ ืชื•ืื ื”-API ืฉืœื ื• v1.

ืชื•ื“ื” ืจื‘ื” ืœื›ืœ ืžื™ ืฉืขื–ืจ ืœื ื• ืœื”ืคื•ืš ืœืžื ื”ืœ ืชืขื•ื“ื•ืช ื›ืœ ืฉืœื•ืฉ ื”ืฉื ื™ื ื”ืืœื”! ืชืŸ ืœื’ืจืกื” 1.0 ืœื”ื™ื•ืช ื”ืจืืฉื•ื ื” ืžื‘ื™ืŸ ื”ืจื‘ื” ื“ื‘ืจื™ื ื’ื“ื•ืœื™ื ืฉื™ื’ื™ืขื•.

ืžื”ื“ื•ืจื” 1.0 ื”ื™ื ืžื”ื“ื•ืจื” ื™ืฆื™ื‘ื” ืขื ืžืกืคืจ ืชื—ื•ืžื™ ืขื“ื™ืคื•ืช:

  • v1 API;

  • ืงื‘ื•ืฆื” kubectl cert-manager status, ื›ื“ื™ ืœืขื–ื•ืจ ื‘ื ื™ืชื•ื— ื‘ืขื™ื•ืช;

  • ืฉื™ืžื•ืฉ ื‘ืžืžืฉืงื™ ื”-API ื”ืขื“ื›ื ื™ื™ื ื‘ื™ื•ืชืจ ืฉืœ Kubernetes;

  • ืจื™ืฉื•ื ืžืฉื•ืคืจ;

  • ืฉื™ืคื•ืจื™ื ื‘-ACME.

ื”ืงืคื“ ืœืงืจื•ื ืืช ื”ืขืจื•ืช ื”ืฉื“ืจื•ื’ ืœืคื ื™ ื”ืฉื“ืจื•ื’.

API v1

ื’ืจืกื” v0.16 ืขื‘ื“ื” ืขื ื”-API v1beta1. ื–ื” ื”ื•ืกื™ืฃ ื›ืžื” ืฉื™ื ื•ื™ื™ื ืžื‘ื ื™ื™ื ื•ื’ื ืฉื™ืคืจ ืืช ืชื™ืขื•ื“ ืฉื“ื” ื”-API. ื’ืจืกื” 1.0 ืžื‘ื•ืกืกืช ืขืœ ื–ื” ืขื API v1. ื”-API ื”ื–ื” ื”ื•ื ื”-API ื”ื™ืฆื™ื‘ ื”ืจืืฉื•ืŸ ืฉืœื ื•, ื‘ืžืงื‘ื™ืœ ื›ื‘ืจ ื ืชื ื• ื”ื‘ื˜ื—ื•ืช ืชืื™ืžื•ืช, ืื‘ืœ ืขื ื”-API v1 ืื ื• ืžื‘ื˜ื™ื—ื™ื ืœืฉืžื•ืจ ืขืœ ืชืื™ืžื•ืช ื‘ืžืฉืš ืฉื ื™ื ืจื‘ื•ืช.

ืฉื™ื ื•ื™ื™ื ืฉื‘ื•ืฆืขื• (ื”ืขืจื”: ื›ืœื™ ื”ื”ืžืจื” ืฉืœื ื• ื“ื•ืื’ื™ื ืœืš ืœื”ื›ืœ):

ืชึฐืขื•ึผื“ึธื”:

  • emailSANs ืขื›ืฉื™ื• ื ืงืจื emailAddresses

  • uriSANs - uris

ืฉื™ื ื•ื™ื™ื ืืœื” ืžื•ืกื™ืคื™ื ืชืื™ืžื•ืช ืœ-SANs ืื—ืจื™ื (ืฉืžื•ืช ื—ืœื•ืคื™ื™ื ื‘ื ื•ืฉื, ืžืฉื•ืขืจ. ืžึฐืชื•ึผืจื’ึฐืžึธืŸ), ื›ืžื• ื’ื ืขื ืžืžืฉืง ื”-API ืฉืœ Go. ืื ื• ืžืกื™ืจื™ื ืืช ื”ืžื•ื ื— ื”ื–ื” ืžื”-API ืฉืœื ื•.

ืœืขื“ื›ืŸ

ืื ืืชื” ืžืฉืชืžืฉ ื‘-Kubernetes 1.16+, ื”ืžืจืช webhooks ืชืืคืฉืจ ืœืš ืœืขื‘ื•ื“ ื‘ื•-ื–ืžื ื™ืช ื•ื—ืœืงื” ืขื ื’ืจืกืื•ืช API v1alpha2, v1alpha3, v1beta1 ะธ v1. ื‘ืขื–ืจืช ืืœื”, ืชื•ื›ืœ ืœื”ืฉืชืžืฉ ื‘ื’ืจืกื” ื”ื—ื“ืฉื” ืฉืœ ื”-API ืžื‘ืœื™ ืœืฉื ื•ืช ืื• ืœืคืจื•ืก ืžื—ื“ืฉ ืืช ื”ืžืฉืื‘ื™ื ื”ื™ืฉื ื™ื ืฉืœืš. ืื ื• ืžืžืœื™ืฆื™ื ื‘ื—ื•ื ืœืฉื“ืจื’ ืืช ื”ืžื ื™ืคืกื˜ื™ื ืฉืœืš ืœ-API v1, ืฉื›ืŸ ื’ืจืกืื•ืช ืงื•ื“ืžื•ืช ื™ื•ืคืกืงื• ื‘ืงืจื•ื‘. ืžืฉืชืžืฉื™ื legacy ืœื’ืจืกืื•ืช ืฉืœ cert-manager ืขื“ื™ื™ืŸ ืชื”ื™ื” ืจืง โ€‹โ€‹ื’ื™ืฉื” v1, ื ื™ืชืŸ ืœืžืฆื•ื ืฉืœื‘ื™ ืฉื“ืจื•ื’ ื›ืืŸ.

ืคืงื•ื“ืช ืกื˜ื˜ื•ืก kubectl cert-manager

ืขื ืฉื™ืคื•ืจื™ื ื—ื“ืฉื™ื ื‘ื”ืจื—ื‘ื” ืฉืœื ื• ืœ kubectl ื ืขืฉื” ืงืœ ื™ื•ืชืจ ืœื—ืงื•ืจ ืืช ื”ื‘ืขื™ื•ืช ื”ืงืฉื•ืจื•ืช ืœืื™ ื”ื ืคืงืช ืชืขื•ื“ื•ืช. kubectl cert-manager status ื›ืขืช ื ื•ืชืŸ ื”ืจื‘ื” ื™ื•ืชืจ ืžื™ื“ืข ืขืœ ืžื” ืฉืงื•ืจื” ืขื ื”ืชืขื•ื“ื•ืช ื•ื’ื ืžืฆื™ื’ ืืช ืฉืœื‘ ื”ื ืคืงืช ื”ืชืขื•ื“ื”.

ืœืื—ืจ ื”ืชืงื ืช ื”ืชื•ืกืฃ, ืชื•ื›ืœ ืœื”ืคืขื™ืœ kubectl cert-manager status certificate <ะธะผั-ัะตั€ั‚ะธั„ะธะบะฐั‚ะฐ>, ืืฉืจ ื™ื—ืคืฉ ืืช ื”ืื™ืฉื•ืจ ืขื ื”ืฉื ื”ื ืชื•ืŸ ื•ื›ืœ ืžืฉืื‘ื™ื ืงืฉื•ืจื™ื ื›ื’ื•ืŸ CertificateRequest, Secret, Issuer ื•- Order and Challenges ืื ืžืฉืชืžืฉื™ื ื‘ืชืขื•ื“ื•ืช ืž-ACME.

ื“ื•ื’ืžื” ืœืื™ืชื•ืจ ื‘ืื’ื™ื ื‘ืื™ืฉื•ืจ ืฉืขื“ื™ื™ืŸ ืœื ืžื•ื›ืŸ:

$ kubectl cert-manager status certificate acme-certificate

Name: acme-certificate
Namespace: default
Created at: 2020-08-21T16:44:13+02:00
Conditions:
  Ready: False, Reason: DoesNotExist, Message: Issuing certificate as Secret does not exist
  Issuing: True, Reason: DoesNotExist, Message: Issuing certificate as Secret does not exist
DNS Names:
- example.com
Events:
  Type    Reason     Age   From          Message
  ----    ------     ----  ----          -------
  Normal  Issuing    18m   cert-manager  Issuing certificate as Secret does not exist
  Normal  Generated  18m   cert-manager  Stored new private key in temporary Secret resource "acme-certificate-tr8b2"
  Normal  Requested  18m   cert-manager  Created new CertificateRequest resource "acme-certificate-qp5dm"
Issuer:
  Name: acme-issuer
  Kind: Issuer
  Conditions:
    Ready: True, Reason: ACMEAccountRegistered, Message: The ACME account was registered with the ACME server
error when finding Secret "acme-tls": secrets "acme-tls" not found
Not Before: <none>
Not After: <none>
Renewal Time: <none>
CertificateRequest:
  Name: acme-certificate-qp5dm
  Namespace: default
  Conditions:
    Ready: False, Reason: Pending, Message: Waiting on certificate issuance from order default/acme-certificate-qp5dm-1319513028: "pending"
  Events:
    Type    Reason        Age   From          Message
    ----    ------        ----  ----          -------
    Normal  OrderCreated  18m   cert-manager  Created Order resource default/acme-certificate-qp5dm-1319513028
Order:
  Name: acme-certificate-qp5dm-1319513028
  State: pending, Reason:
  Authorizations:
    URL: https://acme-staging-v02.api.letsencrypt.org/acme/authz-v3/97777571, Identifier: example.com, Initial State: pending, Wildcard: false
Challenges:
- Name: acme-certificate-qp5dm-1319513028-1825664779, Type: DNS-01, Token: J-lOZ39yNDQLZTtP_ZyrYojDqjutMAJOxCL1AkOEZWw, Key: U_W3gGV2KWgIUonlO2me3rvvEOTrfTb-L5s0V1TJMCw, State: pending, Reason: error getting clouddns service account: secret "clouddns-accoun" not found, Processing: true, Presented: false

ื”ืคืงื•ื“ื” ื™ื›ื•ืœื” ื’ื ืœืขื–ื•ืจ ืœืš ืœืœืžื•ื“ ืขื•ื“ ืขืœ ืชื•ื›ืŸ ื”ืชืขื•ื“ื”. ื“ื•ื’ืžื” ืžืคื•ืจื˜ืช ืœืื™ืฉื•ืจ ืฉื”ื•ื ืคืง ืขืœ ื™ื“ื™ Letsencrypt:

$ kubectl cert-manager status certificate example
Name: example
[...]
Secret:
  Name: example
  Issuer Country: US
  Issuer Organisation: Let's Encrypt
  Issuer Common Name: Let's Encrypt Authority X3
  Key Usage: Digital Signature, Key Encipherment
  Extended Key Usages: Server Authentication, Client Authentication
  Public Key Algorithm: RSA
  Signature Algorithm: SHA256-RSA
  Subject Key ID: 65081d98a9870764590829b88c53240571997862
  Authority Key ID: a84a6a63047dddbae6d139b7a64565eff3a8eca1
  Serial Number: 0462ffaa887ea17797e0057ca81d7ba2a6fb
  Events:  <none>
Not Before: 2020-06-02T04:29:56+02:00
Not After: 2020-08-31T04:29:56+02:00
Renewal Time: 2020-08-01T04:29:56+02:00
[...]

ืฉื™ืžื•ืฉ ื‘ืžืžืฉืงื™ ื”-API ื”ืขื“ื›ื ื™ื™ื ื‘ื™ื•ืชืจ ืฉืœ Kubernetes

Cert-Manager ื”ื™ื” ืžื”ืจืืฉื•ื ื™ื ืฉื”ื˜ืžื™ืขื• ืงื•ื‘ืจื ื˜ืก CRDs. ื–ื”, ื•ื”ืชืžื™ื›ื” ืฉืœื ื• ื‘ื’ืจืกืื•ืช Kubernetes ืขื“ 1.11, ืคื™ืจื•ืฉื• ืฉืขืœื™ื ื• ืœืชืžื•ืš ื‘ืžื•ืจืฉืช apiextensions.k8s.io/v1beta1 ื’ื ืœ-CRD ืฉืœื ื• admissionregistration.k8s.io/v1beta1 ืขื‘ื•ืจ webhooks ืฉืœื ื•. ื›ืขืช ื”ื ื”ื•ืฆืื• ืžืฉื™ืžื•ืฉ ื•ื”ื ื™ื•ืกืจื• ื‘-Kubernetes ืžื’ืจืกื” 1.22. ืขื 1.0 ืฉืœื ื• ืื ื• ืžืฆื™ืขื™ื ื›ืขืช ืชืžื™ื›ื” ืžืœืื” apiextensions.k8s.io/v1 ะธ admissionregistration.k8s.io/v1 ืขื‘ื•ืจ Kubernetes 1.16 (ืฉื ื”ื ื ื•ืกืคื•) ื•ืื™ืœืš. ืœืžืฉืชืžืฉื™ื ื‘ื’ืจืกืื•ืช ืงื•ื“ืžื•ืช, ืื ื• ืžืžืฉื™ื›ื™ื ืœื”ืฆื™ืข ืชืžื™ื›ื” v1beta1 ื‘ืฉืœื ื• legacy ื’ืจืกืื•ืช.

ืจื™ืฉื•ื ืžืฉื•ืคืจ

ื‘ืžื”ื“ื•ืจื” ื–ื•, ืขื“ื›ื ื• ืืช ืกืคืจื™ื™ืช ื”ืจื™ืฉื•ื ืœ klog/v2, ื‘ืฉื™ืžื•ืฉ ื‘-Kubernetes 1.19. ืื ื—ื ื• ื’ื ืกื•ืงืจื™ื ื›ืœ ื™ื•ืžืŸ ืฉืื ื—ื ื• ื›ื•ืชื‘ื™ื ื›ื“ื™ ืœื•ื•ื“ื ืฉื”ื•ืงืฆื• ืœื• ื”ืจืžื” ื”ืžืชืื™ืžื”. ืื ื—ื ื• ื”ื•ื“ืจื›ื ื• ืขืœ ื™ื“ื™ ื–ื” ื”ื“ืจื›ื” ืฉืœ Kubernetes. ื™ืฉ ื—ืžื™ืฉื” (ืœืžืขืฉื” ืฉื™ืฉื”, ืžืฉื•ืขืจ. ืžึฐืชื•ึผืจื’ึฐืžึธืŸ) ืจืžื•ืช ืจื™ืฉื•ื ื”ื—ืœ ืž Error (ืจืžื” 0), ืฉืžื“ืคื™ืกื” ืจืง ืฉื’ื™ืื•ืช ื—ืฉื•ื‘ื•ืช, ื•ืžืกืชื™ื™ืžืช ื‘ Trace (ืจืžื” 5) ืฉื™ืขื–ื•ืจ ืœืš ืœื“ืขืช ื‘ื“ื™ื•ืง ืžื” ืงื•ืจื”. ืขื ื”ืฉื™ื ื•ื™ ื”ื–ื”, ืฆืžืฆืžื ื• ืืช ืžืกืคืจ ื”ื™ื•ืžื ื™ื ืื ืื™ื ืš ื–ืงื•ืง ืœืžื™ื“ืข ื‘ืื’ื™ื ื‘ืขืช ื”ืคืขืœืช cert-manager.

ื˜ื™ืค: cert-manager ืคื•ืขืœ ื‘ืจืžื” 2 ื›ื‘ืจื™ืจืช ืžื—ื“ืœ (Info), ืืชื” ื™ื›ื•ืœ ืœืขืงื•ืฃ ืืช ื–ื” ื‘ืืžืฆืขื•ืช global.logLevel ื‘-Helmchart.

ื”ืขืจื”: ืฆืคื™ื™ื” ื‘ื™ื•ืžื ื™ื ื”ื™ื ื”ืžื•ืฆื ื”ืื—ืจื•ืŸ ื‘ืขืช โ€‹โ€‹ืคืชืจื•ืŸ ื‘ืขื™ื•ืช. ืœืžื™ื“ืข ื ื•ืกืฃ ื‘ื“ื•ืง ืืช ืฉืœื ื• ั€ัƒะบะพะฒะพะดัั‚ะฒะพะผ.

ืžืก' ื”ืขื•ืจืš: ื›ื“ื™ ืœืœืžื•ื“ ืขื•ื“ ืขืœ ืื™ืš ื”ื›ืœ ืขื•ื‘ื“ ืชื—ืช ืžื›ืกื” ื”ืžื ื•ืข ืฉืœ Kubernetes, ืœืงื‘ืœ ืขืฆื•ืช ื—ืฉื•ื‘ื•ืช ืžืžื•ืจื™ื ืžืชืจื’ืœื™ื, ื›ืžื• ื’ื ืขื–ืจื” ื˜ื›ื ื™ืช ืื™ื›ื•ืชื™ืช, ืืชื” ื™ื›ื•ืœ ืœืงื—ืช ื—ืœืง ื‘ืงื•ืจืกื™ื ืžืงื•ื•ื ื™ื ื‘ืกื™ืก Kubernetes, ืฉื™ืชืงื™ื™ื 28-30 ื‘ืกืคื˜ืžื‘ืจ, ื• Kubernetes Megaืฉื™ืชืงื™ื™ื ื‘ื™ืŸ ื”ืชืืจื™ื›ื™ื 14-16 ื‘ืื•ืงื˜ื•ื‘ืจ.

ืฉื™ืคื•ืจื™ื ื‘-ACME

ื”ืฉื™ืžื•ืฉ ื”ื ืคื•ืฅ ื‘ื™ื•ืชืจ ื‘-cert-manager ืงืฉื•ืจ ื›ื ืจืื” ืœื”ื ืคืงืช ืื™ืฉื•ืจื™ื ืž-Let's Encrypt ื‘ืืžืฆืขื•ืช ACME. ื’ืจืกื” 1.0 ื‘ื•ืœื˜ืช ื‘ืฉื™ืžื•ืฉ ื‘ืžืฉื•ื‘ ืงื”ื™ืœืชื™ ื›ื“ื™ ืœื”ื•ืกื™ืฃ ืฉื ื™ ืฉื™ืคื•ืจื™ื ืงื˜ื ื™ื ืืš ื—ืฉื•ื‘ื™ื ืœืžื ืคื™ืง ACME ืฉืœื ื•.

ื”ืฉื‘ืช ืืช ื™ืฆื™ืจืช ืžืคืชื—ื•ืช ื”ื—ืฉื‘ื•ืŸ

ืื ืืชื” ืžืฉืชืžืฉ ื‘ืชืขื•ื“ื•ืช ACME ื‘ื›ืžื•ื™ื•ืช ื’ื“ื•ืœื•ืช, ืกื‘ื™ืจ ืœื”ื ื™ื— ืฉืชืฉืชืžืฉ ื‘ืื•ืชื• ื—ืฉื‘ื•ืŸ ื‘ืžืกืคืจ ืืฉื›ื•ืœื•ืช, ื›ืš ืฉื”ื’ื‘ืœื•ืช ื”ื ืคืงืช ื”ืื™ืฉื•ืจื™ื ืฉืœืš ื™ื—ื•ืœื• ืขืœ ื›ื•ืœื. ื–ื” ื›ื‘ืจ ื”ื™ื” ืืคืฉืจื™ ื‘-cert-manager ื‘ืขืช ื”ืขืชืงืช ื”ืกื•ื“ ืฉืฆื•ื™ืŸ ื‘ privateKeySecretRef. ืžืงืจื” ื”ืฉื™ืžื•ืฉ ื”ื–ื” ื”ื™ื” ื“ื™ ื‘ืขื™ื™ืชื™, ืžื›ื™ื•ื•ืŸ ืฉ-cert-manager ื ื™ืกื” ืœืขื–ื•ืจ ื•ื™ืฆืจ ื‘ืฉืžื—ื” ืžืคืชื— ื—ืฉื‘ื•ืŸ ื—ื“ืฉ ืื ื”ื•ื ืœื ืžืฆื ืื—ื“. ืœื›ืŸ ื”ื•ืกืคื ื• disableAccountKeyGenerationื›ื“ื™ ืœื”ื’ืŸ ืขืœื™ืš ืžืคื ื™ ื”ืชื ื”ื’ื•ืช ื–ื• ืื ืชื’ื“ื™ืจ ืืคืฉืจื•ืช ื–ื• ืœ true - cert-manager ืœื ื™ืคื™ืง ืžืคืชื— ื•ื™ื–ื”ื™ืจ ืื•ืชืš ืฉืœื ืกื•ืคืง ืœื• ืžืคืชื— ื—ืฉื‘ื•ืŸ.

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: letsencrypt
spec:
  acme:
    privateKeySecretRef:
      name: example-issuer-account-key
    disableAccountKeyGeneration: false

ืฉืจืฉืจืช ืžื•ืขื“ืคืช

29 ื‘ืกืคื˜ืžื‘ืจ ื‘ื•ืื• ืœื”ืฆืคื™ืŸ ื™ืขื‘ื•ืจ ืœ-CA ื”ืฉื•ืจืฉ ืฉืœืš ISRG Root. ืชืขื•ื“ื•ืช ื—ืชื•ืžื•ืช ืฆื•ืœื‘ื•ืช ื™ื•ื—ืœืคื• ื‘ Identrust. ืฉื™ื ื•ื™ ื–ื” ืื™ื ื• ืžืฆืจื™ืš ืฉื™ื ื•ื™ื™ื ื‘ื”ื’ื“ืจื•ืช ืžื ื”ืœ ื”ืื™ืฉื•ืจื™ื, ื›ืœ ื”ืื™ืฉื•ืจื™ื ื”ืžืขื•ื“ื›ื ื™ื ืื• ื”ื—ื“ืฉื™ื ืฉื”ื•ื ืคืงื• ืœืื—ืจ ืชืืจื™ืš ื–ื” ื™ืฉืชืžืฉื• ื‘-CA ื”ืฉื•ืจืฉ ื”ื—ื“ืฉ.

Let's Encrypt ื›ื‘ืจ ื—ื•ืชืžืช ืขืœ ืื™ืฉื•ืจื™ื ืขื CA ื–ื” ื•ืžืฆื™ืขื” ืื•ืชื ื›"ืฉืจืฉืจืช ืื™ืฉื•ืจื™ื ื—ืœื•ืคื™ืช" ื‘ืืžืฆืขื•ืช ACME. ื‘ื’ืจืกื” ื–ื• ืฉืœ cert-manager, ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ื’ื™ืฉื” ืœืจืฉืชื•ืช ืืœื• ื‘ื”ื’ื“ืจื•ืช ื”ืžื ืคื™ืง. ื‘ืคืจืžื˜ืจ preferredChain ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ ืืช ืฉื ื”-CA ืฉื ืžืฆื ื‘ืฉื™ืžื•ืฉ, ืฉืื™ืชื• ืชื•ื ืคืง ื”ืื™ืฉื•ืจ. ืื ื–ืžื™ืŸ ืื™ืฉื•ืจ CA ื”ืชื•ืื ืœื‘ืงืฉื”, ื”ื•ื ื™ื•ืฆื™ื ืœืš ืื™ืฉื•ืจ. ืฉื™ืžื• ืœื‘ ืฉื–ื• ื”ืืคืฉืจื•ืช ื”ืžื•ืขื“ืคืช, ืื ืœื ื™ื™ืžืฆื ื“ื‘ืจ, ืชื•ื ืคืง ืื™ืฉื•ืจ ื‘ืจื™ืจืช ืžื—ื“ืœ. ื–ื” ื™ื‘ื˜ื™ื— ืฉืขื“ื™ื™ืŸ ืชื—ื“ืฉ ืืช ื”ืื™ืฉื•ืจ ืฉืœืš ืœืื—ืจ ืžื—ื™ืงืช ื”ืฉืจืฉืจืช ื”ื—ืœื•ืคื™ืช ื‘ืฆื“ ืžื ืคื™ืง ACME.

ื›ื‘ืจ ื”ื™ื•ื ื ื™ืชืŸ ืœืงื‘ืœ ืชืขื•ื“ื•ืช ื—ืชื•ืžื•ืช ืขืœ ื™ื“ื™ ISRG Root, ื›ืš:

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: letsencrypt
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    preferredChain: "ISRG Root X1"

ืื ืืชื” ืžืขื“ื™ืฃ ืœืขื–ื•ื‘ ืืช ื”ืฉืจืฉืจืช IdenTrust - ื”ื’ื“ืจ ืืคืฉืจื•ืช ื–ื• ืœ DST Root CA X3:

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: letsencrypt
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    preferredChain: "DST Root CA X3"

ืฉื™ื ืœื‘ ืฉ-CA ืฉื•ืจืฉ ื–ื” ื™ื•ืฆื ืžืฉื™ืžื•ืฉ ื‘ืงืจื•ื‘, Let's Encrypt ื™ืฉืื™ืจ ืืช ื”ืฉืจืฉืจืช ืคืขื™ืœื” ืขื“ 29 ื‘ืกืคื˜ืžื‘ืจ 2021.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”