Tag: ssl

如何在Java中启用SSL 3

自Java 8 Update 31起,由于SSL协议中的安全漏洞,默认情况下禁用SSL 3协议(请参阅POODLE攻击 )。 即使不推荐,如何启用?

SSLContext初始化

我正在查看JSSE参考指南,我需要获取SSLContext的实例才能创建SSLEngine ,因此我可以将它与Netty一起使用以启用安全性。 要获取SSLContext的实例,我使用SSLContext.getInstance() 。 我看到该方法被多次覆盖,因此我可以选择使用协议和安全提供程序。 在这里 ,我可以看到可以使用的算法列表。 我应该使用哪种算法来实现安全通信? 此外,由于可以指定要使用的安全提供程序,我应该使用哪个提供程序? 谢谢

javax.net.ssl.SSLPeerUnverifiedException:主机名与对等方提供的证书主题不匹配

我在stackoverflow上关注了许多链接并尝试了许多解决方案,但它们都没有为我工作。 我正在使用WSO2 API manager 1.9.1版。 我正面临以下错误: Exception in thread “main” javax.net.ssl.SSLPeerUnverifiedException: Host name ‘XXXXXXXXX’ does not match the certificate subject provided by the peer (CN=localhost, O=WSO2, L=Mountain View, ST=CA, C=US) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.verifyHostname(SSLConnectionSocketFactory.java:465) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:395) at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353) at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:134) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353) at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) at […]

正确关闭SSLSocket

我想在Java中实现SSL代理。 我基本上打开了两个套接字browser-proxy , proxy-server ,并运行两个线程,这些线程将写入proxy-server ,它们从browser-proxy读取的内容,反之亦然。 每个线程看起来像这样: while (true) { nr = in.read(buffer); if (nr == -1) System.out.println(sockin.toString()+” EOF “+nr); if (nr == -1) break; out.write(buffer, 0, nr); } sockin.shutdownInput(); sockout.shutdownOutput(); // now the second thread will receive -1 on read 每个线程只关闭输入套接字,以便最终关闭两个套接字。 但是如果我想使用SSLSocket怎么办? 似乎那里不支持shutdownOutput/Input方法。 这是我得到的例外。 Exception in thread “Thread-35” java.lang.UnsupportedOperationException: \ The method shutdownInput() is […]

Java7拒绝信任信任存储中的证书

我有一个奇怪的问题 – 供应商使用TLS SSLv3同时拥有自签名客户端和服务器证书。 这对Java1.5和Java1.6来说不是问题 – 只需将客户端证书和私钥导入密钥库,将服务器公共证书导入信任库即可。 一切正常。 但是,对于Java7,即使使用相同的信任库,服务器证书也无法信任。 我尝试使用Java7(1.7.03,04和05,x86和x64版本)的Windows和Red Hat都没有成功。 我从头开始重新创建密钥库/信任库,它们只包含这些证书。 已经设置了适当的系统属性(javax.net.ssl.keyStore,javax.net.ssl.trustStore),关键方面是完全相同的代码和配置在JDK5 / 6中完美运行。 我不知所措 – 我找不到任何对额外检查的引用,但我认为证书位于信任库中的事实应该意味着无论是否自签,它都是可信的。 任何帮助赞赏。 广告 exception跟踪: Exception in thread “main” javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of […]

如何使用BouncyCastle进行TLS?

有人知道BouncyCastle的TLS示例吗? 互联网上缺乏它们让我感到惊讶。 如果确实没有,那就让我们收集它们作为答案。

Java:覆盖禁用SSL证书检查的function

Web服务通过SSL保留,它具有自签名证书,托管在远程系统中。我已经创建了一个访问该Web服务的客户端。 这是通过以编程方式将证书添加到密钥库来完成的。 现在我听说,没有必要将证书添加到密钥库以访问自签名Web服务。 相反,我们可以通过覆盖某些方法来禁用证书检查。 这是真的? 那些方法是哪些? 请帮忙。

是否有可能让Java忽略“信任存储”并接受它获得的任何SSL证书?

我正在尝试编写一个使用javax.mail API发送邮件的SSL客户端。 我遇到的问题是服务器请求我使用SSL,但服务器也配置了非标准的SSL证书。 我发现的网页说我需要将证书安装到信任库中。 我不想这样做(我没有必要的权限。) 有没有办法让Java只是忽略证书错误并接受它? 如果失败了,有没有办法让信任存储对我的程序来说是本地的,而不是为整个JVM安装?

Java SSL connect,以编程方式将服务器证书添加到密钥库

我正在将SSL客户端连接到我的SSL服务器。 当客户端由于根目录不存在于客户端的密钥存储区中而无法validation证书时,我需要选择将该证书添加到代码中的本地密钥存储区并继续。 有一些示例始终接受所有证书,但我希望用户validation证书并将其添加到本地密钥库而无需离开应用程序。 SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault(); SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket(“localhost”, 23467); try{ sslsocket.startHandshake(); } catch (IOException e) { //here I want to get the peer’s certificate, conditionally add to local key store, then reauthenticate successfully } 有很多关于自定义SocketFactory,TrustManager,SSLContext等的东西,我真的不明白它们是如何组合在一起的,或者哪条是我目标的最短路径。

如何使用Java中的SSL和pkcs12文件连接到安全的网站?

我有一个pkcs12文件。 我需要使用它来使用https协议连接到网页。 我遇到了一些代码,为了连接到安全的网页,我需要设置以下系统属性: System.setProperty(“javax.net.ssl.trustStore”, “myTrustStore”); System.setProperty(“javax.net.ssl.trustStorePassword”, “changeit”); System.setProperty(“javax.net.ssl.keyStoreType”, “pkcs12”); System.setProperty(“javax.net.ssl.keyStore”, “new_cert.p12”); System.setProperty(“javax.net.ssl.keyStorePassword”, “newpass”); 我有p12(pkcs12)文件。 我只需要一个信任库文件。 我使用以下方法提取证书: openssl.exe pkcs12 -in c:/mykey.p12 -out c:/cert.txt -nokeys -clcerts 现在将证书PEM文件转换为der openssl.exe x509 -in c:/cert.txt -outform DER -out c:/CAcert.der 现在将der文件添加到密钥库 keytool -import -file C:/Cacert.der -keystore mytruststore 现在我有了信任库,但是当我使用它时,我收到以下错误 Exception in thread “main” java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: […]