2012-12-31 79 views
4

我試圖在python中設置服務器和客戶端,服務器使用帶有證書的SSL對客戶端進行身份驗證。網上有很多SSL證書的例子,但是我發現的一切都是服務器向客戶端提供證書,客戶端檢查它。我需要服務器來確保客戶端有權連接到服務器。我瞭解如何生成和發送證書以及他們如何工作的基礎知識。我會輸入我的代碼,但是沒有SSL的客戶端/服務器工作正常,我一直在引用this進行SSL。該頁面底部的客戶端/服務器示例總結了我對Python中的SSL證書的理解。Python SSL套接字客戶端身份驗證

我意識到這是沒有太多去,但如果有人能解釋基本的修改,以便例如讓服務器驗證客戶端,而不是周圍的其他方式,這將是真棒。或者,鏈接到一個示例,甚至只是一些套接字方法進行調查將是非常有用的。讓我知道是否需要更多信息。我不是故意模糊,並承諾我已經花了整整一天的時間尋找信息:)。

編輯:我試圖堅持自己最基本的SSL庫。又名「import ssl」。

回答

3

你會使用SSLSocket.getpeercert拿到證書。客戶端需要在與服務器端一樣包裝套接字時指定一個密鑰和證書。在服務器端,您還需要通過ca_certs =「path_to_ca_cert_file」大概也想指定cert_reqs = CERT_REQUIRED(見。args作爲ssl.wrap_socket

除此之外,這聽起來像你可能會尋找做基於證書的客戶端身份驗證/授權?這是使用getpeercert獲取客戶端證書和訪問字段在證書中的普通認證路徑使用一個簡單的問題(即通用名稱==用戶ID)

0

不能確定你的問題是指什麼,但是你可以看到SSL in Pythonother resource for SSL in PythonValidating SSLget SSL Certificate information,你可能會發現其他的良好的聯繫。

+0

這是我的理解是,我鏈接的例子中的代碼讓服務器發送客戶端的證書,然後客戶端檢查證書與證書鏈的關係,確認服務器可以連接,我需要做相反的事情,我需要客戶端發送服務器的證書,有服務根據允許的列表檢查客戶的證書,最後完成與客戶的握手。我會繼續讀...也許我不像我想的那麼瞭解。感謝您的鏈接。 – user1777820