簡體   English   中英

如何驗證自簽名認證

[英]How to validate self-signed certification

我會清楚地向您提供我的問題,以便您回答我

我有一個客戶端 - 服務器(套接字)連接,我使用SslStream保護,因為我知道使用ssl確保我的客戶端只會連接到我的服務器

要做到這一點,我必須向我的客戶端添加一個功能來驗證服務器認證並確保服務器是真實的(我的服務器)

但我真的不知道如何驗證我的自簽名認證並希望得到你的幫助

此致,並提前致謝

想象一下,如果證書不是自簽名的 - 它由受信任的證書頒發機構簽名。 它的工作原因是因為你的客戶端設備 - windows,mac,linux,iphone,android設備已經擁有所有知名證書頒發機構的證書。 進行連接時,操作系統會為您完成工作。 它確保在連接期間發送到客戶端的證書由眾所周知的證書頒發機構簽名。 這種方法的唯一原因是因為客戶端已經擁有所有知名證書頒發機構的證書。

如果您選擇使用自簽名證書 - 或由自簽名證書頒發機構簽名的證書 - 則必須執行工作,而不是操作系統。 但是 - 任務基本相同 - 您需要驗證在連接期間發送到客戶端的證書是否符合預期。 並且您將需要使用簽名證書使用的相同策略 - 您的客戶端必須預先安裝預期的證書(或證書鏈)。

一些方法,您需要某種方式來確保您的客戶已經擁有自簽名證書。 特別是證書中的所有公共信息。 客戶端將沒有私鑰 - 因為那是私有的。 然后,您可以向應用程序添加代碼,驗證連接期間發送的證書的哈希值是否與預安裝的證書的哈希值相匹配。

我注意到你之前問了一個類似的問題,你可能已經知道了這一切。 這是另外一點:

只要您保持自簽名證書的私鑰絕對安全,任何人都無法偽造您的自簽名證書。 它無法完成。 如果有人嘗試,他們將不得不生成一個與您不匹配的新私鑰 - 因為他們不知道您的私鑰,因為您保證了它的安全。

然后一切都崩潰了。 如果他們有不同的私鑰,他們將需要一個不同的公鑰。 這意味着他們將擁有不同的證書哈希。 並且您的應用已經知道正確的公鑰和哈希(如上所述),因此當他們嘗試使用他們的錯誤公鑰和哈希時,您的應用將拒絕連接 這是您在應用程序中必須執行的操作。

如果他們嘗試使用您的公鑰和哈希但使用不同的私鑰,SSL將不允許他們建立連接。

為什么不使用可信賴的廉價證書呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM