Java 6或7 HTTPS通过TLSv1.2发布



我在https get/post上通过java使用tlsv1.2连接时遇到问题。

有人有一个指南或一些行之有效的例子吗?我通过keytool导入了私钥,公钥由密钥库上的密码设置。我使用了SSLSocketFactory,但只得到错误https(而不是握手)。我在jvm-Dhttps.protocols="TLSv1.2"中添加了参数,以仅启用TLS的1.2版本。但是什么都没有。。。

请提供一个示例或导入证书的指南来实现该类并使用SSLSocketFactory。

非常感谢你的帮助。。。

Java 6不支持tls1.2链接,如果使用Java 6,则无法启用tls1.2。

我希望这将工作

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);

我遇到了同样的问题,最终基于BouncyCastle Provider构建了自己的"TLSConnectionFactory"。代码在此处共享

因此,在您可以使用TLSConnectionFactory这个简单快捷的方法之后:

     String httpsURL =  xxxxxxxxxx
    URL myurl = new URL(httpsURL);      
    HttpsURLConnection  con = (HttpsURLConnection )myurl.openConnection();
    con.setSSLSocketFactory(new TSLSocketConnectionFactory());   
    InputStream ins = con.getInputStream();

相关内容

  • 没有找到相关文章

最新更新