2010-01-29 98 views
13

我正在實現一個客戶端與python的扭曲,連接時檢查服務器SSL證書,基本上this配方。我在很多HOWTO中看到過,比如這個服務器通過SSL證書檢查客戶端的真實性。目前,我使用唯一的ID和1024個字符串(他們是自動化客戶端,無需人工交互)對我的客戶端進行身份驗證。爲什麼我應該使用證書來驗證客戶端?

我不明白的是什麼原因,我必須使用整個ssl的東西,而不是隻發送「密碼」到服務器。在所有連接已經被ssl加密後,檢查服務器證書和所有內容。 This是一個類似的問題,但我想知道爲什麼人們使用SSL客戶端證書,而不是什麼是最好的方式來做到這一點。

回答

-1

檢查證書可確保您連接到您希望連接的人。它可以防止「中間人」攻擊。

請參閱http://www.thoughtcrime.org/software/sslsniff/以瞭解客戶端未正確檢查證書鏈的相關情況,從而導致通過中間人攻擊利用SSL的非常簡單的方法。

+0

對,在這種情況下,客戶端和中間人,中間人和服務器之間的通道仍然安全,客戶端只是沒有驗證證書。服務器不關心 - 如果服務器可以檢查客戶證書,例如,一個非公開的申請或一些申請證書發行和簽署的預期,這是不可能的。 – 2010-01-29 19:15:55

-2

擁有由證書頒發機構簽署的SSL證書意味着SSL證書所有者已經經歷了由CA驗證的麻煩,即擁有者是他們所說的那個人。例如,如果您有一個名爲widgetsdeluxe.com的電子商務商店,並且您已獲得由Verisign等簽署的域widgetsdeluxe.com的證書,購物者會知道,當他們進入該網站並且證書上的名稱與他們去過的實際域名相匹配時,他們可以相信該信息是安全的並且來自widgetsdeluxe.com域(這是爲了防止欺騙和中間人攻擊)。

+0

此答案僅解決服務器證書問題,OP詢問爲什麼客戶端證書會有用。 – 2010-01-29 19:08:20

4

客戶端證書限制訪問授權證書的人員。假設您的證書是正確分發和管理的,這使得從未經授權的位置(或者說bot網絡)連接起來更加困難,因爲您不僅需要用戶名和密碼。

客戶端證書是一個潛在的部分防禦縱深戰略,如果你是在一個環境中,你可以管理客戶端證書

+0

客戶端正在檢查服務器證書,因此只能使用真實服務器進行連接。如果使用服務器SSL連接加密連接,有人仍然可以進行mitm攻擊?我想客戶端證書可能會讓我的服務器無法使用無效的身份驗證請求更難,但我不確定。我的意思是在我看來,客戶端證書基本上是一個奇特的密碼,我沒有看到有什麼不同。感謝您的回答。 – 2010-01-29 19:27:32

+1

對於SSL來說,MITM攻擊不應該是可能的(顯然,請檢查服務器證書)。但是,用戶名/密碼很容易泄露。因此,對於另一層,客戶端證書不僅僅是一個奇特的用戶/密碼 - 它是一個帶有分發管理系統和撤銷等簽名工件。使用普通的用戶名/密碼,您可以嘗試從多臺機器進行不同的密碼攻擊,而無需證書。客戶端證書用於另一個安全級別 - 通常只能在受控環境中進行。 – 2010-01-29 19:34:11

+0

是的,證書的管理和分配是棘手的部分。 – 2010-01-29 19:36:55

2

證書很容易撤消。密碼可能被盜用,但竊取客戶端證書會更困難。

+2

我寫的客戶端不需要任何人工輸入,所以密碼已經存在於客戶端讀取併發送到服務器的文本文件中。如果有人可以竊取密碼文件,他們也可以竊取客戶端證書文件。如果我需要「撤銷」客戶端密碼,我可以將其更改爲數據庫/無論如何。因此,在這種情況下,在文件上使用pwd字符串的證書的優點是什麼? – 2010-01-29 19:50:21

+1

以明文形式通過電線發送密碼?如果是,它可以被盜。大多數操作系統將客戶端證書存儲在特定於所用登錄名的加密存儲中 – Greg 2010-01-29 19:53:58

2

使用客戶端基於證書的相互認證防止至少下列攻擊/問題:

  • 釣魚密碼
  • 鍵登錄密碼
  • 肩窺密碼
  • 猜測密碼
  • 多個服務上的密碼重用

此外,使用客戶端證書爲您提供了在智能卡,USB令牌或其他硬件安全模塊(HSM)上存儲客戶端證書(以及匹配的私鑰)的可能性,從而從「您知道的事情」(密碼)到「 (令牌,卡片)加上「你知道的東西」(PIN)。這也叫做two-factor authentication

在你使用密碼作爲一個技術,系統與系統之間的通信鏈路共享密鑰的特定情況下,使用證書有兩個好處:

  • 秤更好:與共享密鑰,每個節點都有分享不同密鑰/密碼與其他節點相連,導致(n-1)!密碼,而對於證書,每個節點只需要一個證書和私鑰(n個證書加一個CA)在HSM上存儲密鑰的可能性,從而防止其被數字複製/竊取。
0

客戶端身份驗證(即服務器檢查客戶端證書時)的主要優點是,如果服務器遭到入侵,客戶端的祕密(證書的私鑰)不會受到威脅。而如果客戶端使用憑據,他們可能會與服務器一起受到攻擊。