私鑰加密,防止網站證書私鑰泄露

本文首發於做者的微信公衆號:網絡安全生命週期git

原文連接: 加密,防止網站證書私鑰泄露github

 

【風險與背景】sql


若是網站使用的數字證書私鑰文件泄露,會形成什麼後果呢?數據庫

黑客就能夠構建假冒的釣魚網站,藉助DNS劫持,將用戶引導到假網站上面去,可竊取用戶的口令等敏感信息;或者黑客執行中間人攻擊。安全

微軟2015年12月就曾出現*.xboxlive.com證書私鑰泄露事件,所幸及時發現,吊銷了證書,事件未形成進一步損失。服務器

 

【現狀】微信


當前,各大主流Web服務器在配置證書的時候,均使用文件形式的證書及私鑰文件,在配置文件中設置2個證書文件的路徑。網絡

以Nginx爲例:負載均衡

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

( --完--)

相關文章
相關標籤/搜索