java - 如何在java中使用TLSv1.2

标签 java tls1.2

我有一个使用 TLS 的 java 聊天应用程序,但是当我使用 Wireshark 捕获数据时,协议(protocol)列显示值“TCP”,为什么它不显示为“TLS”。我的代码出了什么问题?

CertificateFactory cf = CertificateFactory.getInstance("X509");
X509Certificate cert = (X509Certificate) cf.generateCertificate(
    this.getClass().getResourceAsStream("/"+"lib/ca.crt")
);

InputStream is=this.getClass().getResourceAsStream("/"+"lib/plainclient.jks");
KeyStore clientKeys = KeyStore.getInstance("JKS");
clientKeys.load(is,"xuanthinh".toCharArray());
KeyManagerFactory clientKeyManager = KeyManagerFactory.getInstance("SunX509");
clientKeyManager.init(clientKeys,"xuanthinh".toCharArray());

KeyStore ks = KeyStore.getInstance("JKS");
is=this.getClass().getResourceAsStream("/"+"lib/serverpub.jks");
ks.load(is,"xuanthinh".toCharArray());
TrustManagerFactory trustManager = TrustManagerFactory.getInstance("SunX509");
trustManager.init(ks);
//use keys to create SSLSoket
ssl = SSLContext.getInstance("TLS");
ssl.init(
    clientKeyManager.getKeyManagers(), trustManager.getTrustManagers(), 
    SecureRandom.getInstance("SHA1PRNG")
);

最佳答案

它们是不同的协议(protocol),并且都在传输加密内容时使用。

阅读 OSI Model对于网络协议(protocol),因为这解释了每个协议(protocol)相对于彼此的位置。

TCP 是第 4 层(传输层)的一部分,而 TLS 是第 6 层(表示层)的一部分。

关于java - 如何在java中使用TLSv1.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40998226/

相关文章:

java - 如何更改 keystore 中 key 的别名?

java - gradle 子模块具有无法解决的依赖关系

java - 用于 Java 的类似于 RMagick 的图像处理库

Android KitKat 不支持 TLSv1.2

ssl - 了解数字签名

asp.net - 如何告诉用户升级到支持 ASP.NET 中的 TLS 1.2 的浏览器

ssl - 如何判断使用某些密码套件可以建立什么 SSL/TLS 协议(protocol)版本

java - 无法启动嵌入式容器;无法启动嵌入式Tomcat

ssl - 使用自签名证书的 TLS 连接失败

java - 将字符串转换为 URI