微信订阅号二维码

本页内容二维码:

本栏目热门内容
  • Windows 系统安全基线及软...
  • CIS-CAT 配置评估工具介绍...
  • 修改audispd.conf解决审计...
  • 详细了解微软安全合规工具...
  • 从甲方角度介绍“CIS互联...
  • 2022年甲方个人网络安全运...
  • 业务导向安全策略#5员工培...
  • CIS关键安全控制措施#1总...
  • 微软安全合规工具包(SCT...
  • 安装RHEL/CentOS时如何选...
  • CIS关键安全控制措施#16应...
  • SELINUX介绍连载#3:什么...
  • CIS关键安全控制措施#17突...
  • CIS RAM风险评估方法5篇目...
  • 网络安全日志收集甲方基础...
  • SELINUX介绍连载#1:基础...
  • CIS关键安全控制措施#6访...
  • SELINUX介绍连载#2:模式...
  • 关于OpenSCAP/SCAP安全策...
  • CIS RAM#4实施防护措施、...
  • 什么是网络行为异常检测(...
  • CIS关键安全控制措施集18...
  • CIS关键安全控制措施#14安...
  • 网络攻防中的色彩象征
  • DNS子域名发掘工具两项
  • 业务导向安全策略#1数据管...
  • CIS RAM#1风险评估方法核...
  • 内网DNS服务器安全性能基...
  • CIS关键安全控制措施#8审...
  • 更多...

    打造甲方私有的多级CA证书中心(上)

    作者:Sender  来源:WaveCN.com  发布日期:2022-11-05  最后修改日期:2022-11-05

    网络安全等保测评里面有这么一条要求,属于中风险项目:

    所有的信息传输都需要加密,即使是在内网。

    这条要求落到具体信息系统的意思就是,这个系统只允许通过HTTPS访问,要配置使用SSL证书进行通信加密。

    但等保测评要求的并不仅仅是信息系统,还包括整个IT环境,所以这个要求的完整实现,实际并不简单,网络设备、安全设备、服务器的带外管理后台等等但凡是有WEB界面控制台功能的设备全都会被涉及。

    这些控制台大多数都支持启用HTTPS,还可以让用户自己上载和应用SSL证书。有些固件本身就会在开启HTTPS的时候生成自签名证书,实现HTTPS加密。

    整件事的重点,在于要通过SSL证书保护信息系统的数据传输以及确认身份有效性。对于部署在内网的信息系统来说,要启用HTTPS,就需要设置内网域名访问,但公共可用的SSL证书服务无论需要付费与否,都不支持对内网域名签发。

    虽然笔者也折腾出了一个办法,那就是通过内部DNS把公网域名解析成内网IP地址,这样可以在内网使用公网域名,流量并不跑到外网,而且证书还可以有效。具体参见:

    内网DNS服务实现公网域名在内网转换解析

    但这方法,对没有公网域名的设备依然无效。虽然还可以考虑购买泛域名证书,但成本太高,且还是需要有公网主域名,分级分层还会对内部DNS服务的实现增加复杂性。

    那么:干脆自己建一个CA证书中心。

    CA证书中心的建立方法,大多数网文都会推荐使用easy-rsa,当然笔者也不例外。但区别在于,大多数网文介绍的都是通过easy-rsa建立简单的、只有一级的CA证书中心,然后就随便签。

    这种做法不仅是对等保要求的敷衍应付,还实际引入了新的不安全因素。

    要实现足够的安全性,需要参照专业SSL证书机构那样,在甲方内部实现根CA和中级CA构成的证书链,通过中级CA去签发最终证书。

    而这个过程,还需要考虑:签发的证书类别、签发过程操作安全性等要素。于是,就有了本文。

    写在前面:

    因为CA中心的意义重大,必须确保CA中心服务器是独立系统,尤其应该是独立硬件。该服务器仅用于导入、签署和撤销证书请求。它不应运行任何其他服务,理想情况下,不使用CA服务器时,它应处于离线状态或完全关闭。

    首先是架构设计。要考虑清楚,CA中心的管理和操作架构设计。既然是多级CA,重点考虑的就是分级之间如何能互操作而又能相互隔离。

    不差钱也不差地方的甲方可以弄好几台服务器,从根CA到中级CA每一级都是独立的服务器。但我只能考虑如何在一台服务器上实现。

    不过一台服务器也是有好处的:签发过程的所有数据流都可以在机器内实现,不需要在网络上传递,甚至可以全程离线操作,通过U盘实现数据文件传出传入也是可行的。

    经思考和参考大量资料后,总体架构设计原则如下:

    1、EASY-RSA软件包整个系统只装一份,不创立任何副本,一律通过建立符号链接使用,实现软件程序和数据相互独立。
    2、各级CA数据相互独立,分别在不同的用户名下存放,实现逐级隔离,但通过用户同组而实现上一级对下一级可直接操作。

    多级CA用户之间的互操作关系

    具体实现设计如下:

    1、根CA

    根CA的数据库存放在root用户文件夹,创建到EASY-RSA的符号链接。这主要方便同时进行软件包的操作。如果进一步严格要求,也可以专门建立一个根CA用户。

    用根CA用户创建和初始化根CA数据文件。

    2、中级CA

    为每一个中级CA创建用户,在用户文件夹内创建到EASY-RSA的符号链接,用中级CA用户创建和初始化本级的CA数据文件。

    设置根CA用户是所有的中级CA用户的同组用户,中级CA用户所有文件设置同组可以读写的文件属性,即660。

    设置中级CA用户的主目录属性同组可以读写(770)。

    需要创建的中级CA的数量,按实际信息化环境有多少种类需要使用SSL证书的情况决定。对于笔者所在环境,至少包括有:

    • 信息系统中间件,比如Tomcat;

    • WEB服务器,比如Apache,IIS,Nginx;

    • 硬件管理的各种代理程序的管理界面,比如PCNS,但不是所有代理程序都能支持替换HTTPS证书;

    • 服务器的带外管理WEB界面,比如iDRAC,iLO,iBMC等;

    • 路由器、交换机、不间断电源、监控主机等等所有支持网络管理的设备的网络管理WEB界面(注意不是所有品牌都支持替换HTTPS证书)。

    操作上,首先使用中级CA用户去初始化本级的CA证书中心数据,创建给根CA的签名请求CSR文件。

    随后切换到根CA用户,从中级CA用户目录获取并操作签名请求CSR文件,签发证书,然后把生成的证书复制回去中级CA用户目录。

    再切换回去中级CA用户,将根CA签发的中级证书导入,作为本机签发终端加密证书时用的证书。

    3、CA中心直接签发证书

    直接签发就是在服务器内直接创建私钥和证书,并通过可靠的方式传递出去给使用环境使用。如果需要加强安全管理,则应按下文第4点方式,对传入的签名请求CSR文件进行证书签发,这样才能避免在网络上传递私钥。

    创建专门用于分发传出私钥、证书的用户A,中级CA用户属于该用户A同组,可读写用户A允许同组读写的文件和目录,也就是文件属性660。

    设置A用户的主目录属性为同组可以读写(770)。

    操作上,可以通过中级CA用户一步生成私钥和签发证书,然后把私钥和证书复制到用户A目录下,设置文件拥有者为用户A。

    签发证书后需要传出文件时,用户A通过SCP方式登录后从用户A目录复制获得私钥和证书,然后部署。

    如果有必要更严格,可以按第2点的分类,创建多个传出用户去对应每一个中级CA。

    4、CA中心对外来签名请求CSR文件签发证书

    创建一个专门用于传入签名请求CSR文件的用户B,设置中级CA用户和用户B同组,可读写用户B允许同组读写的文件。

    设置B用户的主目录属性也一样是同组可以读写(770)。

    操作上,用户B通过SCP方式登录并上传签名请求CSR文件到用户B自己的目录后,设置文件属性同组可以读写(660)。

    签发时,通过中级CA用户,对位于用户B自己目录下的签名请求CSR文件进行操作,生成证书,然后复制到用户目录,修改文件拥有者为用户B。用户B再通过SCP方式复制获取签发后的证书,然后部署使用。

    简要设计大致如上。下一篇就是具体过程记录。

    写本文时发现,一些云运营商也基于同样的想法,推出了私有CA服务。

    欢迎关注微信公众号后私信讨论文章内容!
    本栏目相关
  •  2022-03-16 Windows 系统安全基线及软件工具介绍
  •  2022-05-11 CIS-CAT 配置评估工具介绍及操作实践
  •  2022-03-17 详细了解微软安全合规工具包(SCT)
  •  2022-03-25 从甲方角度介绍“CIS互联网安全中心”
  •  2022-05-10 2022年甲方个人网络安全运维基础工具
  •  2022-06-06 业务导向甲方网络安全策略设计#5员工培训及系列总结
  •  2022-03-28 如何应用CIS互联网安全中心发布的《CIS关键安全控制措施集》之一:总览
  •  2022-03-18 微软安全合规工具包(SCT)操作实战
  •  2022-03-11 安装RHEL/CentOS时如何选择配置安全策略?
  • 返回页首