我正在構建一個python應用程序,客戶端將從服務器(也運行python)請求xml頁面。相互SSL身份驗證 - 客戶端和服務器端。 Python - > Django/Twisted/Tornado
我想在木偶配置管理系統上做些事情。木偶工作如下:
1)如果客戶端第一次運行,它會生成一個證書籤名請求和一個私鑰。前者是自簽名的x509證書。
2)客戶端連接到主服務器(此時客戶端未通過認證)併發送CSR,它也會收到CA證書和CRL。
3)主要在本地存儲CSR
4)管理員檢查CSR並最終簽名(通過自動簽名可以自動執行此過程)。我強烈建議在此階段驗證證書指紋。
5)客戶端正在等待他的簽名證書,最終由主人發送。
6)所有下一個通信將使用此客戶端證書。主設備和客戶端都將通過共享相同的CA來驗證對方。
(從http://www.masterzen.fr/2010/11/14/puppet-ssl-explained/)
,我不知道該怎麼做的主要事情是:
- 這是最好的庫使用?
- 在服務器端使用什麼?在Apache/nginx後面的Django能夠在第一次運行時簽署證書,然後使用證書進行身份驗證,或者我需要在前端使用類似扭曲的東西?
- 發送CSR的最佳方式是發送到服務器的POST?
- 是否有人知道是否有一些代碼示例可以覆蓋客戶端和服務器端?
- 有沒有其他方法可以在客戶端/服務器之間建立可信連接而無需人工迭代(web服務之間進行身份驗證的最佳實踐是什麼)?
謝謝!我會看看你鏈接的軟件包。關於信任,是的。在獲得CSR後,我們的想法是,負責客戶的人員將登錄並簽署該特定客戶的證書。關於django的用法,我的疑問是,如果我能夠在隨後的請求中檢查證書。 – 2012-03-23 16:28:23
@Leon:您會爲Django編寫身份驗證中間件(在Django代碼庫中有遠程用戶身份驗證的示例,您可以使用SSL證書執行相同操作)。在中間件中,您可以從請求對象獲取證書,然後使用它進行身份驗證。然後,您將看到新客戶可以發送不需要身份驗證的CSR的另一個視圖。 – cha0site 2012-03-23 16:48:52