前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >加密,防止网站证书私钥泄露

加密,防止网站证书私钥泄露

作者头像
用户U2
发布2022-06-02 15:41:12
9990
发布2022-06-02 15:41:12
举报

【风险与背景】


如果网站使用的数字证书私钥文件泄露,会造成什么后果呢?

黑客就可以构建假冒的钓鱼网站,借助DNS劫持,将用户引导到假网站上面去,可窃取用户的口令等敏感信息;或者黑客执行中间人攻击。

微软2015年12月就曾出现*.xboxlive.com证书私钥泄露事件,所幸及时发现,吊销了证书,事件未造成进一步损失。

【现状】


当前,各大主流Web服务器在配置证书的时候,均使用文件形式的证书及私钥文件,在配置文件中设置2个证书文件的路径。

以Nginx为例:

代码语言:javascript
复制
server {
    listen  443 ssl;
    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key  /path/to/privkey.pem;

    ...
}

可以看出,私钥文件直接明文存储在文件系统。

如果黑客进入到了这台主机,就可以拿到证书的私钥了。

【改进思路】


将证书明文保存在文件系统中,不是一个好的实践,那么可以怎么改进呢?

笔者在设计Janusec Application Gateway时,采取的方法是将证书文件和私钥文件都存储在数据库中,并且在写入数据库之前,先对私钥文件的内容进行加密。

【实践】


基于Golang打造WAF网关一文中,提到了Janusec Application Gateway采用基于Web的统一的证书管理器来统一管理各业务的证书,并对证书私钥采取了AES256的加密措施,加密后写入数据库,而不再使用文件形式存储。

使用psql登录进Janusec所使用的PostgreSQL数据库,查询私钥的结果看上去是这样的(二进制密文):

由于私钥使用了加密技术存放于数据库(不同的部署实例使用不同的加密密钥),大大降低了私钥泄露的风险。

这是一款基于Golang打造的应用安全网关,具备WAF(Web应用防火墙)功能、CC攻击防御、组合策略配置,天然支持HTTPS,无需Agent,私钥加密存储在数据库,提供负载均衡和统一的Web化管理入口。

这款产品已经开源,如果有兴趣,可到Github查看:

https://github.com/Janusec/janusec

( --完--)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据安全架构与治理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档