天天看點

Cert Manager

  1. issuer privateKeySecretRef 自動生成的private key,填寫一個名字即可
  2. 使用kubectl describe 檢視對應的資源,可以看到建立成功與否,以及失敗的資訊issuer cert order 等一層層的往下看,都有詳細的出錯資訊;
  3. ACME Issuer type represents a single Account registered with the ACME server.

1 register -> 生成的fulldomain

2. 添加dns記錄 _acme-challenge.targetdomain.com cname fulldomain

3. regiseter的結果建立acmedns.json檔案,格式如下

{
  "taomiao.store": {
    "username": "ec953ce2-a147-4980-816a-9fd820b086da",
    "password": "HqJxoWxm7bVsA12prMOJFlakouNGNs39v0AZIlP3",
    "fulldomain": "e214d520-19c9-4d32-858d-99818ea41654.auth.acme-dns.io",
    "subdomain": "e214d520-19c9-4d32-858d-99818ea41654",
    "allowfrom": []
  }
}
      

kubectl create secret generic acme-dns --from-file acmedns.json

不同的域名都可以配置這一個regiseter賬号,配置對應的dns記錄,同時維護好acmedns.json檔案即可;

  1. 根據上面的資訊建立issue
apiVersion: certmanager.k8s.io/v1alpha1
kind: Issuer
metadata:
  name: letsencrypt-staging
  namespace: cert-manager
spec:
  acme:
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
         name: letsencrypt-staging
    solvers:
    - dns01:
        acmedns:
          host: https://auth.acme-dns.io
          accountSecretRef:
            name: acme-dns
            key: acmedns.json
      

建立完成之後,使用kubectl describe 可以檢視建立成功與否,如果失敗,會茶看到詳細的失敗資訊。正式環境可以使用如下的配置

apiVersion: certmanager.k8s.io/v1alpha1
kind: Issuer
metadata:
  name: letsencrypt-prod
  namespace: cert-manager
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
         name: letsencrypt-prod
    solvers:
    - dns01:
        acmedns:
          host: https://auth.acme-dns.io
          accountSecretRef:
            name: acme-dns
            key: acmedns.json      
  1. 更具上面的資訊建立 Certificate
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
  name: taomiao-store
  namespace: cert-manager
spec:
  secretName: taomiao-store-tls
  renewBefore: 360h # 15d
  commonName: taomiao.store
  dnsNames:
  - taomiao.store
  issuerRef:
    name: letsencrypt-staging
    kind: Issuer      

建立好這個檔案之後,cert manager立馬開始生成證書的流程

可以通過kubectl describe 指令檢視issuer cert order challenge

  1. 建立萬 Cert之後,如果沒有出錯,就會生成一個名為 taomiao-store-tls(Certificate.spec.secretName) 的secret;

    可以看到生成的證書的key 和 證書本身;

    生成fullchain.crt證書,有自己域名的證書和let’s的ca證書,可以直接用;微信裡面也沒有問題。

cert manager 實作自動花的原理

  1. dns01

    使用第三方的acme-dns + acme.sh這種方式

    可以看到,隻需要在目标域名配置一個cname即可實作安全的自動化;

參考