文章目錄
使用 cert-manager 建立 PKCS12 格式 (.pfx) 憑證
之前筆記 使用 cert-manager 建立憑證 紀錄到如何使用 cert-manager 來建立憑證,在預設情境下只會產生 .crt + .key 的憑證與 key,但 ASP.NET Core 使用的憑證格式為 PKCS12
(.PFX
) ,當然也可以透過 openssl 來將 .crt+.key 轉換為 .pfx ,但這樣的轉換不利於自動化部署,所以還是希望透過 cert-manager 自行產生 .pfx,就來看看該如何設定 cert-manager 來產生 PKCS12
(.PFX
) 憑證吧
基本環境說明
- macOS Catalina 10.15.7
docker desktop 3.1.0(51484)
- docker engine 20.10.2
- Kubernetes v1.19.3
Helm chart
- cert-manager v1.1.0
設定方式
建立自簽憑證的 Issuer
kubectl apply -f <(echo " apiVersion: cert-manager.io/v1 kind: Issuer metadata: name: selfsigned-issuer spec: selfSigned: {} ")
建立 PKCS12 用的密碼
這個 secret 也可以不用建立,到時建立 PKCS12 時用明碼
kubectl create secret generic pfxpwd --from-literal password=pass.123
建立 PKCS12 格式 (.pfx) 憑證
kubectl apply -f <(echo ' apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: yowko-pkcs12 spec: secretName: yowko-pkcs12 keystores: pkcs12: create: true passwordSecretRef: name: pfxpwd key: password dnsNames: - "*.default.svc.cluster.local" - "*.testyowko.com" issuerRef: name: selfsigned-issuer kind: Issuer ')
驗證 p12 有效性
kubectl get secrets/yowko-pkcs12 -o "jsonpath={.data['keystore\.p12']}" | base64 -D |openssl pkcs12 -info
心得
之前還沒確定做法前,我查了很多文件跟 GitHub issue,但總是無法順利產生 PKCS12
(.PFX
) 憑證,還一直覺得為什麼官網上沒有完整一點的範例,只在 relase note 上放個簡單的 yaml,但後來確定做法後經過反覆檢查 發現是我在 passwordSecretRef
這把 key 跟 name 寫反了XD
這邊提供大家基本確認的方式:TYPE
必需要是 kubernetes.io/tls
,如果產生出來的是 Opaque
可能會有憑證未成功建立的狀況,後續綁定也可能有問題
參考資訊
文章作者 Yowko Tsai
上次更新 2021-03-03
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。