[英]Java: TCP Encryption, SSL and Netty
好的,我有一个点对点(一个主机上的客户端/服务器)设置(通过本地局域网),这是使用Netty,一个Java网络框架。 我使用原始TCP / IP(如在,没有HTTP)进行通信和传输。
目前,所有数据都以“纯文本”传输,我正在开始保护此类传输数据的过程。
我已经很好地阅读了加密/实践等类型(但可能只是触及表面并且已经融化了我的大脑)
Netty包含一个SSL实现,有一些链接可以更好地解释自己:
http://docs.jboss.org/netty/3.2/xref/org/jboss/netty/example/securechat/package-summary.html
在“SecureChatTrustManagerFactory”里面有两种方法:
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实现是说“这是创建安全连接的基础,但我们遗漏了实际使它们安全/认证的部分”。
我应该知道的任何其他指针/提示?
先感谢您。
正如其他人所指出的,应用程序安全性和传输链接安全性之间存在差异。 我认为你的目标是最后一个,因为你主要提到加密。 加密提供了窃听者的机密性。 此外,由于SSL还包含消息身份验证代码,因此它还可以保护第三方在传输过程中更改数据包。 收到消息后,它不提供任何消息保护。
您可能已经在互联网上注意到HTTPS连接,您至少需要一个服务器证书。 此证书可以保持静态,但应包含到期日,您应该更换证书。 客户端应该信任服务器证书(例如,通过将其作为资源嵌入)。 您还可以将SSL与客户端身份验证一起使用,但这意味着您需要有足够的安全措施来保护客户端上的私钥安全。
最好只从“自签名”服务器证书开始。 这是你需要在checkServerTrusted
方法中信任的checkServerTrusted
。 基本上,链只是一个证书。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.