證書管理:從手工到平臺(tái)化
一、背景
以往,vivo 互聯(lián)網(wǎng)業(yè)務(wù)的域名證書運(yùn)維管理工作,嚴(yán)重依賴經(jīng)驗(yàn)豐富的高級(jí)運(yùn)維工程師個(gè)人專職管理,證書管理存在單點(diǎn)以及過于依賴的人的情況。
隨著業(yè)務(wù)規(guī)模的持續(xù)擴(kuò)大,以及對(duì)證書管理質(zhì)量標(biāo)準(zhǔn)的要求提升,加強(qiáng)全網(wǎng)證書信息準(zhǔn)確的收斂把控。
為此,業(yè)務(wù)運(yùn)維團(tuán)隊(duì)決定,通過證書管理流程標(biāo)準(zhǔn)化、平臺(tái)化,完成全生命周期管理證書,來消除因依賴人為管理證書問題導(dǎo)致業(yè)務(wù)可用性受損的痛點(diǎn)。
二、能力規(guī)劃
全生命周期管理業(yè)務(wù)證書,我們建設(shè)的平臺(tái)需具備以下特性和能力:
- 高效的證書申請(qǐng):
新申請(qǐng)以及續(xù)期場(chǎng)景,平臺(tái)引導(dǎo)用戶自動(dòng)的生成私鑰和 CSR 并提交工作申請(qǐng)聯(lián)絡(luò)單,用戶完成驗(yàn)證后自動(dòng)存儲(chǔ)證書合并私鑰。 - 便捷的證書管理:
支持多種證書格式導(dǎo)入、導(dǎo)出功能,查看完整的證書信息。 - 安全的私鑰存儲(chǔ):
使用 AES256 等 高強(qiáng)度算法加密存儲(chǔ)。 - 證書逾期監(jiān)控:
支持 30/60 天,可自定義逾期的證書監(jiān)控告警。 - 證書變更白屏化:
覆蓋 NGINX、 SLB、CDN 以及 VUA 證書變更場(chǎng)景。
三、設(shè)計(jì)思路
3.1 技術(shù)選型
(1)前端框架:
用基于Vue2的Element構(gòu)建基礎(chǔ)頁面
(2)后端框架:
以 Go 語言為基礎(chǔ),快速利用gin框架提供restful的api,業(yè)務(wù)數(shù)據(jù)存儲(chǔ)在MySQL
3.2 架構(gòu)設(shè)計(jì)
證書管理平臺(tái)整體架構(gòu)設(shè)計(jì):
3.3 模塊設(shè)計(jì)
證書管理平臺(tái)包含四個(gè)非常重要的子模塊:
- 可視:
是整個(gè)平臺(tái)最基礎(chǔ)的模塊,除基礎(chǔ)的權(quán)限功能外,通過收斂匯總所以證書信息,實(shí)現(xiàn)證書總覽數(shù)據(jù)分析,證書的操作的追溯以及變更審計(jì)和操作可視化。 - 管理:
是證書信息管理的核心功能之一,實(shí)現(xiàn)證書信息的可視化以及信息變更、證書申請(qǐng)、證書續(xù)期的能力。 - 變更:
提供 NGINX、SLB、CDN、VUA 證書的推送能力。 - 監(jiān)控:
提供證書的生命周期檢測(cè)、有效期提醒、線上證書掃描的能力。
四、技術(shù)實(shí)現(xiàn)
4.1 前端
前端是基于Vue2和Element來組建用戶的操作界面,整個(gè)詳細(xì)的設(shè)計(jì)圖如下:
其中
- main.j包含整個(gè)業(yè)務(wù)系統(tǒng)落地所需要的各類組件和元素,實(shí)現(xiàn)組件 的提供以及基礎(chǔ)的權(quán)限校驗(yàn);
- api的方法通過合理的封裝后端的接口,提供view中呈現(xiàn)給用戶的界面調(diào)用方法,來實(shí)現(xiàn)整個(gè)證書管理的業(yè)務(wù)流程操作。
在整個(gè)證書管理平臺(tái)的迭代過程中,只需重點(diǎn)關(guān)注view中vcm前綴用戶界面的代碼實(shí)現(xiàn)即可。
4.2 后端
后端使用Go語言來編寫業(yè)務(wù)邏輯和API接口。其中架構(gòu)可以參考3.2設(shè)計(jì)圖,管理平臺(tái)核心邏輯通過代碼片段展示如下:
(1)基于casbin實(shí)現(xiàn)的權(quán)限管理:通過角色控制權(quán)限,并按需賦予用戶角色默認(rèn)訪問權(quán)限(如下圖創(chuàng)建角色時(shí)AddMenuAuthority、UpdateCasbin方法)。
(2)證書相關(guān)數(shù)據(jù)加密處理:獲取前端用戶選擇的相關(guān)算法進(jìn)行加密。
(3)基于證書管理標(biāo)準(zhǔn)化流程的業(yè)務(wù)代碼實(shí)現(xiàn),覆蓋證書的信息管理&變更推送&監(jiān)控告警&平臺(tái)的角色權(quán)限控制。
五、平臺(tái)預(yù)覽
經(jīng)過多個(gè)開發(fā)迭代,平臺(tái)相關(guān)的核心功能如下:
5.1 證書信息概覽
概覽首頁收斂證書管理的功能入口,以及收納管理證書的全貌,方便管理員了解所管理的證書狀態(tài)和最近的申請(qǐng)進(jìn)度。
5.2 證書信息管理
匯總了目前內(nèi)銷所有證書信息,后續(xù)平臺(tái)上申請(qǐng)的證書信息管理也會(huì)收斂于此,并提供證書私鑰相關(guān)的查看和下載。
5.3 證書申請(qǐng)/續(xù)期
通過平臺(tái)場(chǎng)景化證書申請(qǐng)續(xù)期的操作,解決過往碎片化操作以及無經(jīng)驗(yàn)人員需通過文檔閱讀或者人員指導(dǎo)完成證書申請(qǐng)問題。
5.4 證書變更管理
平臺(tái)覆蓋云上、NGINX 集群、CDN 以及 VUA 的證書白屏化、可追溯操作歷史更新能力。
5.5 證書監(jiān)控
收斂在平臺(tái)上管理的證書都會(huì)有逾期監(jiān)控提醒,來提醒運(yùn)維人員及時(shí)完成對(duì)應(yīng)的證書更新管理,確保業(yè)務(wù)不受影響。
六、總結(jié)
證書管理平臺(tái)的實(shí)踐落地,通過流程標(biāo)準(zhǔn)化以及管理平臺(tái)的建立,規(guī)范證書的信息、變更、告警、變更審計(jì)相關(guān)管理,上線后至今,也無證書管理相關(guān)的問題導(dǎo)致的可用性告警,解決了傳統(tǒng)域名證書管理場(chǎng)景下人效、可用性隱患的痛點(diǎn),是業(yè)務(wù)運(yùn)維 SRE 可用性保障&運(yùn)維提效的一個(gè)成功案例。
七、展望
目前我們獲取的證書,依舊依賴于傳統(tǒng)的域名證書分發(fā)模式(站點(diǎn)管理員需要花費(fèi)金錢購買數(shù)字證書,并且證書的簽發(fā)和更新需要時(shí)間和人力成本)。隨著區(qū)塊鏈和Web 3.0技術(shù)的發(fā)展,新增了去中心化身份驗(yàn)證和身份管理技術(shù),在證書的分發(fā)上具備以下優(yōu)勢(shì):
- 不可篡改性:
區(qū)塊鏈技術(shù)保證證書的安全性和不可篡改性。因?yàn)槊恳粋€(gè)區(qū)塊鏈節(jié)點(diǎn)都會(huì)對(duì)交易進(jìn)行驗(yàn)證和記錄,從而保證數(shù)據(jù)的一致性和完整性,防止偽造和篡改。 - 透明性:
區(qū)塊鏈技術(shù)使得所有參與者都可以獲得統(tǒng)一的信息,從而保證證書的透明性,避免信息不對(duì)稱或不公平的情況發(fā)生,同時(shí)也可以有效地降低信息傳遞成本。 - 保密性:
區(qū)塊鏈技術(shù)可以采用加密算法,保證證書的保密性和隱私性。同時(shí),也可以根據(jù)需求設(shè)定只允許特定的參與者訪問相關(guān)信息。 - 高效性:
傳統(tǒng)的證書分發(fā)需要進(jìn)行大量的人力和物力投入,而基于區(qū)塊鏈的證書分發(fā)可以實(shí)現(xiàn)自動(dòng)化,從而提高證書分發(fā)的效率。 - 可追溯性:
基于區(qū)塊鏈的證書分發(fā)可以實(shí)現(xiàn)對(duì)證書的溯源和追蹤,從而可以更好地防止證書的丟失或?yàn)E用。
綜上所述,基于區(qū)塊鏈的證書分發(fā)可以有效降低證書分發(fā)的成本和提高證書的安全性。
未來,基于相關(guān)技術(shù)的成熟程度,也會(huì)合理的應(yīng)用和替換過往的證書申請(qǐng)分發(fā)模式,迭代證書管理平臺(tái)相關(guān)的功能,來配合提高證書的管理效率和安全性。