好吧,我有一個點對點(一個主機上的客戶端/服務器)設置(通過本地局域網),這是使用Netty,一個Java網絡框架。我使用原始TCP/IP(如在,沒有HTTP)進行通信和傳輸。Java:TCP加密,SSL和Netty
當前所有數據都以「純文本」傳輸,我開始保護這些傳輸數據的過程。
我有類型的加密/實踐等良好的讀取(但可能只碰了面和已融化我的大腦)
Netty中包括SSL implemntation,繼承人一些聯繫,希望能夠更好地解釋自己:
http://docs.jboss.org/netty/3.2/xref/org/jboss/netty/example/securechat/package-summary.html
內部 「SecureChatTrustManagerFactory」 有2種方法:
public void checkClientTrusted(
X509Certificate[] chain, String authType) throws CertificateException {
// Always trust - it is an example.
// You should do something in the real world.
// You will reach here only if you enabled client certificate auth,
// as described in SecureChatSslContextFactory.
System.err.println(
"UNKNOWN CLIENT CERTIFICATE: " + chain[0].getSubjectDN());
}
public void checkServerTrusted(
X509Certificate[] chain, String authType) throws CertificateException {
// Always trust - it is an example.
// You should do something in the real world.
System.err.println(
"UNKNOWN SERVER CERTIFICATE: " + chain[0].getSubjectDN());
}
「SecureChatKeyStore」包含我可以看到的硬編碼證書。
所以我的問題是:
- 我需要生成一個證書?
- 如果是這樣,每次運行應用程序?
- 如果是這樣,每個客戶?
- 如果是這樣,客戶端和服務器之間是否通過此認證?
- 如果是這樣,它如何安全地完成?
我不完全確定從哪裏開始。 從我所看到的Netty實現中可以看出:「這是創建安全連接的基礎,但我們忽略了實際上使它們安全/認證的部分」。
我應該知道的其他指針/提示?
預先感謝您。
我讀過很多東西(在網上)與加密,身份驗證,簽署非常迅速..不是所有的真正沉沒,做的金額。我不確定我是否有時間深入,特別是當它的一半已經在Netty中實現時;我主要是在尋找最後一點(證書部分) – Metalstorm 2012-02-02 19:21:01
目前還不清楚你將如何在同伴之間建立信任。這似乎是您的系統中主要缺失的元素。 – Bruno 2012-02-02 19:51:38
@布魯諾,我認爲是對的。我首先查看公鑰/私鑰加密,然後轉換到保護整個傳輸過程,而不僅僅是通過不安全的連接發送加密數據(是嗎?)。我認爲這是我需要幫助的地方。 – Metalstorm 2012-02-02 19:59:44