作者:vivo 互联网运维团队- Peng Jiahong
本文介绍了vivo业务运维证书管理从手工到平台化的历程。
一、背景
以往,vivo 互联网业务的域名证书运维管理工作,严重依赖经验丰富的高级运维工程师个人专职管理,证书管理存在单点以及过于依赖的人的情况。
随着业务规模的持续扩大,以及对证书管理质量标准的要求提升,加强全网证书信息准确的收敛把控。
为此,业务运维团队决定,通过证书管理流程标准化、平台化,完成全生命周期管理证书,来消除因依赖人为管理证书问题导致业务可用性受损的痛点。
二、能力规划
全生命周期管理业务证书,我们建设的平台需具备以下特性和能力:
-
高效的证书申请:
新申请以及续期场景,平台引导用户自动的生成私钥和 CSR 并提交工作申请联络单,用户完成验证后自动存储证书合并私钥。
-
便捷的证书管理:
支持多种证书格式导入、导出功能,查看完整的证书信息。
-
安全的私钥存储:
使用 AES256 等 高强度算法加密存储。
-
证书逾期监控:
支持 30/60 天,可自定义逾期的证书监控告警。
-
证书变更白屏化:
覆盖 NGINX、 SLB、CDN 以及 VUA 证书变更场景。
三、设计思路
3.1 技术选型
(1)前端框架:
用基于Vue2的Element构建基础页面
(2)后端框架:
以 Go 语言为基础,快速利用gin框架提供restful的api,业务数据存储在MySQL
3.2 架构设计
证书管理平台整体架构设计:
3.3 模块设计
证书管理平台包含四个非常重要的子模块:
-
可视:
是整个平台最基础的模块,除基础的权限功能外,通过收敛汇总所以证书信息,实现证书总览数据分析,证书的操作的追溯以及变更审计和操作可视化。
-
管理:
是证书信息管理的核心功能之一,实现证书信息的可视化以及信息变更、证书申请、证书续期的能力。
-
变更:
提供 NGINX、SLB、CDN、VUA 证书的推送能力。
-
监控:
提供证书的生命周期检测、有效期提醒、线上证书扫描的能力。
四、技术实现
4.1 前端
前端是基于Vue2和Element来组建用户的操作界面,整个详细的设计图如下:
其中:
-
main.j包含整个业务系统落地所需要的各类组件和元素,实现组件 的提供以及基础的权限校验;
-
api的方法通过合理的封装后端的接口,提供view中呈现给用户的界面调用方法,来实现整个证书管理的业务流程操作。
在整个证书管理平台的迭代过程中,只需重点关注view中vcm前缀用户界面的代码实现即可。
4.2 后端
后端使用Go语言来编写业务逻辑和API接口。其中架构可以参考3.2设计图,管理平台核心逻辑通过代码片段展示如下:
(1)基于casbin实现的权限管理:通过角色控制权限,并按需赋予用户角色默认访问权限(如下图创建角色时AddMenuAuthority、UpdateCasbin方法)。
(2)证书相关数据加密处理:获取前端用户选择的相关算法进行加密。
(3)基于证书管理标准化流程的业务代码实现,覆盖证书的信息管理&变更推送&监控告警&平台的角色权限控制。
五、平台预览
经过多个开发迭代,平台相关的核心功能如下:
5.1 证书信息概览
概览首页收敛证书管理的功能入口,以及收纳管理证书的全貌,方便管理员了解所管理的证书状态和最近的申请进度。
5.2 证书信息管理
汇总了目前内销所有证书信息,后续平台上申请的证书信息管理也会收敛于此,并提供证书私钥相关的查看和下载。
5.3 证书申请/续期
通过平台场景化证书申请续期的操作,解决过往碎片化操作以及无经验人员需通过文档阅读或者人员指导完成证书申请问题。
5.4 证书变更管理
平台覆盖云上、NGINX 集群、CDN 以及 VUA 的证书白屏化、可追溯操作历史更新能力。
5.5 证书监控
收敛在平台上管理的证书都会有逾期监控提醒,来提醒运维人员及时完成对应的证书更新管理,确保业务不受影响。
六、总结
证书管理平台的实践落地,通过流程标准化以及管理平台的建立,规范证书的信息、变更、告警、变更审计相关管理,上线后至今,也无证书管理相关的问题导致的可用性告警,解决了传统域名证书管理场景下人效、可用性隐患的痛点,是业务运维 SRE 可用性保障&运维提效的一个成功案例。
七、展望
目前我们获取的证书,依旧依赖于传统的域名证书分发模式(站点管理员需要花费金钱购买数字证书,并且证书的签发和更新需要时间和人力成本)。随着区块链和Web 3.0技术的发展,新增了去中心化身份验证和身份管理技术,在证书的分发上具备以下优势:
-
不可篡改性:
区块链技术保证证书的安全性和不可篡改性。因为每一个区块链节点都会对交易进行验证和记录,从而保证数据的一致性和完整性,防止伪造和篡改。
-
透明性:
区块链技术使得所有参与者都可以获得统一的信息,从而保证证书的透明性,避免信息不对称或不公平的情况发生,同时也可以有效地降低信息传递成本。
-
保密性:
区块链技术可以采用加密算法,保证证书的保密性和隐私性。同时,也可以根据需求设定只允许特定的参与者访问相关信息。
-
高效性:
传统的证书分发需要进行大量的人力和物力投入,而基于区块链的证书分发可以实现自动化,从而提高证书分发的效率。
-
可追溯性:
基于区块链的证书分发可以实现对证书的溯源和追踪,从而可以更好地防止证书的丢失或滥用。
综上所述,基于区块链的证书分发可以有效降低证书分发的成本和提高证书的安全性。
未来,基于相关技术的成熟程度,也会合理的应用和替换过往的证书申请分发模式,迭代证书管理平台相关的功能,来配合提高证书的管理效率和安全性。