2014-01-30 41 views
3

我有一個小網站,它的安全對我很重要。我沒有錢購買SSL證書,所以我想自己創建一個(理論上用java,儘管我仍然不知道如何在服務器端解密它)。用戶不會信任它,因爲他們信任SSL,但它會提供我正在尋找的安全性。SSL如何保護數據免受嗅探?

我讀了一些關於SSL的文章,我想我得到了它背後的數學,但我不明白它如何防止嗅探。如果SSL加密客戶端計算機上的密碼/信息/任何內容並將其發送到服務器進行解密,那麼嗅探器會嗅探編碼密碼並將其發送到服務器會出現什麼問題?

+2

您不'購買SSL'。您購買了SSL *證書。* – EJP

+0

自簽名證書很好,可以避免在與服務器通話時發生嗅探。但是,沒有客戶確定他們正在與_your_服務器通話,而不是其他人使用某些自簽名證書來搶劫流量。要解釋SSL有點遠,請查看[TLS握手的開始](http://en.wikipedia.org/wiki/Secure_Sockets_Layer#TLS_handshake)。關鍵是雙方都有祕密的一部分。 – Wrikken

回答

7

我沒有錢購買SSL證書

你不能不要。你已經浪費了更多的時間,證書會耗費你的時間。

,所以我想製作一個自己(理論上用java

不能與單獨的Java JRE的。像他們信任的SSL

的用戶不會相信它,但它會提供我正在尋找的安全性。

若用戶不信任它,它不會。

如果SSL對客戶計算機上的密碼/信息/任何內容進行加密並將其發送到服務器進行解密,那麼嗅探器會嗅探編碼密碼並將其發送到服務器會出現什麼問題?

它比這複雜得多。客戶端通過PKI和服務器的證書驗證服務器的身份。客戶端和服務器然後使用您提到的數學來協商對稱會話密鑰。密鑰本身從未被傳輸。數據使用此密鑰進行加密,並與消息驗證代碼一起發送,以顯示消息是否完整。由於加密,數據是私密的;並且由於密鑰協商的方式,SSL還提供了對重放攻擊的無懈可擊。

+0

「不適用於單獨的Java JRE。」爲什麼不? – Atlantis

+0

因爲JRE中沒有任何內容會生成新的證書。 – EJP

+0

我想過用applet來做... – Atlantis