我在使用tlsv1.2通过java。
连接https get / post时遇到问题有人有指南或一些有用的例子吗? 我在keystore上通过密码设置的keytool私钥和公钥导入。 我使用了SSLSocketFactory,但我只得到错误https(不是握手)。 我在jvm -Dhttps.protocols =“TLSv1.2”中添加了参数,以仅启用TLS版本1.2。 但没什么......
示例请或导入证书的指南,以实现该类并使用SSLSocketFactory。
非常感谢你的帮助......
答案 0 :(得分:1)
Java 6不支持tls1.2 link,如果使用java 6则无法启用TLS1.2。
答案 1 :(得分:0)
我希望这会起作用
InputStream is = new FileInputStream("cert.crt");
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate caCert = (X509Certificate)cf.generateCertificate(is);
TrustManagerFactory tmf = TrustManagerFactory
.getInstance(TrustManagerFactory.getDefaultAlgorithm());
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(null); // You don't need the KeyStore instance to come from a file.
ks.setCertificateEntry("caCert", caCert);
tmf.init(ks);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, tmf.getTrustManagers(), null);
创建SocketFactory
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] { "TLSv1.2" }, null,
SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
答案 2 :(得分:0)
我遇到了同样的问题,最后基于BouncyCasttle Provider构建了自己的“ TLSConnectionFactory ”。代码为shared here
因此,您可以使用此 TLSConnectionFactory 这种简单快捷的方式:
String httpsURL = xxxxxxxxxx
URL myurl = new URL(httpsURL);
HttpsURLConnection con = (HttpsURLConnection )myurl.openConnection();
con.setSSLSocketFactory(new TSLSocketConnectionFactory());
InputStream ins = con.getInputStream();