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

一、背景

Dapr 默認證書有效時間是1年,證書過期後就不能執行相關控制面和數據面的交互了,如下圖:

image

二、查看證書有效時間

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

image

三、解決方案

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

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

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

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

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

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

對於 1.7 以下版本, 只能手工進行操作,具體可以參考 文檔 //v1-5.docs.dapr.io/operations/security/mtls/#bringing-your-own-certificates ,更新完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