加密,防止網(wǎng)站證書私鑰泄露

本文首發(fā)于作者的微信公眾號:網(wǎng)絡(luò)安全生命周期

原文鏈接:?加密,防止網(wǎng)站證書私鑰泄露

【風(fēng)險與背景】


如果網(wǎng)站使用的數(shù)字證書私鑰文件泄露,會造成什么后果呢?

黑客就可以構(gòu)建假冒的釣魚網(wǎng)站,借助DNS劫持,將用戶引導(dǎo)到假網(wǎng)站上面去,可竊取用戶的口令等敏感信息;或者黑客執(zhí)行中間人攻擊。

微軟2015年12月就曾出現(xiàn)*.xboxlive.com證書私鑰泄露事件,所幸及時發(fā)現(xiàn),吊銷了證書,事件未造成進(jìn)一步損失。

【現(xiàn)狀】


當(dāng)前,各大主流Web服務(wù)器在配置證書的時候,均使用文件形式的證書及私鑰文件,在配置文件中設(shè)置2個證書文件的路徑。

以Nginx為例:

server {

? ? listen? 443 ssl;

? ? ssl_certificate /path/to/fullchain.pem;

? ? ssl_certificate_key? /path/to/privkey.pem;

? ? ...

}

可以看出,私鑰文件直接明文存儲在文件系統(tǒng)。

如果黑客進(jìn)入到了這臺主機,就可以拿到證書的私鑰了。

【改進(jìn)思路】


將證書明文保存在文件系統(tǒng)中,不是一個好的實踐,那么可以怎么改進(jìn)呢?

筆者在設(shè)計Janusec Application Gateway時,采取的方法是將證書文件和私鑰文件都存儲在數(shù)據(jù)庫中,并且在寫入數(shù)據(jù)庫之前,先對私鑰文件的內(nèi)容進(jìn)行加密。

【實踐】


基于Golang打造WAF網(wǎng)關(guān)一文中,提到了Janusec Application Gateway采用基于Web的統(tǒng)一的證書管理器來統(tǒng)一管理各業(yè)務(wù)的證書,并對證書私鑰采取了AES256的加密措施,加密后寫入數(shù)據(jù)庫,而不再使用文件形式存儲。

使用psql登錄進(jìn)Janusec所使用的PostgreSQL數(shù)據(jù)庫,查詢私鑰的結(jié)果看上去是這樣的(二進(jìn)制密文):

由于私鑰使用了加密技術(shù)存放于數(shù)據(jù)庫(不同的部署實例使用不同的加密密鑰),大大降低了私鑰泄露的風(fēng)險。

這是一款基于Golang打造的應(yīng)用安全網(wǎng)關(guān),具備WAF(Web應(yīng)用防火墻)功能、CC攻擊防御、組合策略配置,天然支持HTTPS,無需Agent,私鑰加密存儲在數(shù)據(jù)庫,提供負(fù)載均衡和統(tǒng)一的Web化管理入口。

這款產(chǎn)品已經(jīng)開源,如果有興趣,可到Github查看:

https://github.com/Janusec/janusec

( --完--)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容