如何在java中使用TLSv1.2

时间:2016-12-06 14:53:15

标签: java tls1.2

我有一个使用TLS的java聊天应用程序,但是当我使用Wireshark捕获数据时,协议列显示值" 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")
);

2 个答案:

答案 0 :(得分:2)

它们是不同的协议,在传输加密内容时都会使用它们。

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

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

答案 1 :(得分:0)

不确定您在代码段中使用了哪些客户端。但是使用Jersey / CXF这样做我通常只设置http.protocols值。此链接包含一些有用的信息:https://superuser.com/questions/747377/enable-tls-1-1-and-1-2-for-clients-on-java-7