我有一个业务服务器,我正在尝试使用java连接,但要做到这一点,他们要求Tls版本为1.1
或1.2
。
我在我的计算机上安装了openssl,我似乎正在使用Tls 1.1版。我用这个命令测试了我的openssl安装
openssl s_client -host google.com -port 443
这是结果
SSL-Session:
Protocol : TLSv1
Cipher : AES128-SHA
Session-ID: FFE6DD3F1F78EC17999809D875E12D5138573BE52BCAA2EB55225F2EFE864127
Session-ID-ctx:
Master-Key: 7599DC1A0FDC8BC41431D7907EE933BE7527D2A658ADFC6B34B2CAB3D071DD7E13B6ED2C7C35A6EABDCA52943B1155A2
Key-Arg : None
Start Time: 1489987373
Timeout : 300 (sec)
Verify return code: 20 (unable to get local issuer certificate)
为了便于阅读,我们遗漏了一些信息,但您可以在终端中进行测试。
这是我的java版本
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
如何让我的java keytool生成Tls
版本1.1
或1.2
的证书?
答案 0 :(得分:0)
证书应该与运输无关。
如果不知道您在服务器端使用的是什么,那么确定您的最佳行动方案将会有点困难。
您可以通过传递-tls1_2开关强制s_client使用只 tls 1.2,但这不是您想要的。
因此,假设您使用的是Tomcat 8(以及非APR HTTP连接器),您可以使用属性sslEnabledProtocols =“TLSv1.2”配置TLSv1.2。
sslEnabledProtocols实质上映射到Java的SSLSocket.setEnabledProtocols()方法。 Jetty可能有类似的配置。
如果您使用的是Apache HTTPd或nginx,可能还会有文档说明如何执行此操作。