2012-12-17 227 views
0

我相信這是嵌入在SSL證書/ HTTPS規範的細節中,但我並不完全正在討論這個問題。SSL證書和瀏覽器到網絡服務器連接

如果現代瀏覽器連接到HTTPS站點,則HTTP請求的主體將被加密。 SSL證書實質上是用於在客戶端和服務器之間來回通信的「公共」密鑰?

黑客能否從公共網站獲取公鑰,稱爲「https://www.google.com」,並監控客戶端/服務器流量並解密數據?

此外,客戶是否需要驗證證書的「頒發者」。例如,自簽名證書客戶端不需要驗證,但是對於從可信發行者提供的證書,證書驗證過程中會發生什麼?

回答

1

服務器的證書包含一個實際上每個人都可以看到的公鑰。

http://en.wikipedia.org/wiki/Secure_Sockets_Layer#TLS_handshake_in_detail

無法黑客獲得:反過來此密鑰服務器和客戶端之間的握手過程中,以創建將用於加密任何進一步的消息的唯一會話密鑰使用從公共網站公開的密鑰,說 「https://www.google.com」和監測客戶端/服務器的流量和解密 的數據?

黑客不會知道會話密鑰。他會聽(無知)加密的東西。

此外,客戶是否需要驗證證書的「頒發者」。例如,對於 示例,自簽名證書客戶端不需要驗證,但是對於 從可信發行者提供的證書,在證書驗證過程中發生了什麼?

像你說的,該證書的頒發者驗證對信任當局的一個預先定義的列表。證書鏈中的任何證書都將進行驗證,包括受信任的頒發者,到期日期。此外,每個證書都包含指向證書吊銷列表(CRL分發點)的URL,客戶將嘗試從此URL下載列表並確保手頭證書尚未被吊銷。 「

+0

」就像你說的,證書頒發者是根據預先定義的信任機構名單進行驗證的。「 - 所以客戶有代碼來對受信任的機構進行「驗證」。我正在使用Java,嵌入代碼以驗證使用HTTPSURLConnection庫的權限在哪裏? –

+0

我指的是瀏覽器。他們都在幕後進行這些檢查。如果您需要使用代碼手動執行此操作,則您有更好的機會開始一個新問題(我在.net中完成了這項工作,而不是在java中完成)。 – Ulises

+0

在瀏覽器中存在代碼並且存在基於Java的web瀏覽器。如果我使用的是基於Java的瀏覽器,我不知道代碼是如何工作的。但你的回答已經回答了我的核心問題。 –

相關問題