Dapr 證書過期了怎麼辦? 別慌,有救!

2022-09-19 18:02:12

一、背景

Dapr 預設證書有效時間是1年,證書過期後就不能執行相關控制面和資料面的互動了,如下圖:

image

二、檢視證書有效時間

通過dapr mtls expiry 看到期時間,具體參見命令https://v1-7.docs.dapr.io/reference/cli/dapr-mtls/dapr-mtls-expiry/

image

三、解決方案

Dapr 支援使用 Dapr 控制平面、Sentry 服務(中央證書頒發機構 (CA))對 Dapr 範例之間的通訊進行傳輸中加密。

Dapr 允許運維和開發人員引入他們自己的證書,或者讓 Dapr 自動建立和儲存自簽名的根證書和頒發者證書。具體參見

https://docs.dapr.io/operations/security/mtls/

Dapr 在1.7版本引入了一個新的命令:

dapr mtls renew-certificate -k --valid-until <days> –restart

生成全新的根證書和頒發者證書,由新生成的私鑰簽名。Dapr sentry service必須重新啟動隨後的其餘控制平面服務才能讀取新證書。這可以通過向--restart命令提供標誌來完成。

對於 1.7 以下版本, 只能手工進行操作,具體可以參考 檔案 https://v1-5.docs.dapr.io/operations/security/mtls/ ,更新完Dapr 證書,則必須重新啟動 Dapr Sentry 服務,然後是 Dapr 控制平面服務的其餘部分。

kubectl rollout restart deploy/dapr-sentry -n <DAPR_NAMESPACE>

一旦sentry 完全重新啟動執行:

kubectl rollout restart deploy/dapr-operator -n <DAPR_NAMESPACE>
kubectl rollout restart statefulsets/dapr-placement-server -n <DAPR_NAMESPACE>

接下來,您必須重新啟動所有啟用 Dapr 的 pod。推薦的方法是重新啟動部署:

kubectl rollout restart deploy/<myapp> –n <APP_NAMESPACE>

在成功重新啟動所有部署(並因此載入新的 Dapr 證書)之前,由於證書不匹配,您將經歷潛在的停機時間。


1.7 版本以後Dapr 在這個方面做的更完善了,為 Dapr 控制平面 mTLS 證書過期設定監控 
從 mTLS 根證書到期前 30 天開始,Dapr 哨兵服務將發出每小時警告級別的紀錄檔,指示根證書即將到期。 作為在生產中執行 Dapr 的最佳操作實踐,我們建議為這些特定哨兵服務紀錄檔設定監控,以便您瞭解即將到期的證書。

image

從 1.7.0 版開始,作為提醒您即將到來的證書到期的附加工具,CLI 現在會在您與基於 Kubernetes 的部署互動時列印證書到期狀態。

image