Tag: ssl

javax.net.ssl.SSLHandshakeException:收到致命警报:握手APN中的错误

我正在尝试使用Java-pns向iPhone发送推送通知,但是我收到以下错误… javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 这是我的代码…… String token=”95076d2846e8979b46efd1884206a590d99d0f3f6139d947635ac4186cdc5942″; String host = “gateway.sandbox.push.apple.com”; int port = 2195; String payload = “{\”aps\”:{\”alert\”:\”Message from Java o_O\”}}”; NotificationTest.verifyKeystore(“res/myFile.p12”, “password”, false); KeyStore keyStore = KeyStore.getInstance(“PKCS12”); keyStore.load(getClass().getResourceAsStream(“res/myFile.p12”), “password”.toCharArray()); KeyManagerFactory keyMgrFactory = KeyManagerFactory.getInstance(“SunX509”); keyMgrFactory.init(keyStore, “password”.toCharArray()); SSLContext sslContext = SSLContext.getInstance(“TLS”); sslContext.init(keyMgrFactory.getKeyManagers(), null, null); SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); SSLSocket sslSocket = (SSLSocket) sslSocketFactory.createSocket(host, […]

Java SSLException:证书中的主机名与www.googleapis.com不匹配

环境 :Mac OS X Lion和Linux Debian squeeze / sid,JDK 1.7.0和JDK 1.6.0_27 错误 : javax.net.ssl.SSLException: hostname in certificate didn’t match: != OR OR . 我在所有上述OS / JDK组合中都收到此错误。 背景 :我正在使用google-api-services-customsearch和google-api-service-shopping jar来向Google发送网络服务电话。 我的电话一直工作到一天前。 从昨天开始,代码开始抛出…… javax.net.ssl.SSLException: hostname in certificate didn’t match: != OR OR at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:228) at org.apache.http.conn.ssl.BrowserCompatHostnameVerifier.verify(BrowserCompatHostnameVerifier.java:54) ….. at com.google.api.services.shopping.Shopping$Products$List.execute(Shopping.java:156) 我尝试使用此处的说明将证书导入cacerts密钥库,但这似乎无法解决问题。

Java没有为相互SSL提供客户端证书?

我正在尝试使用Java SpringBoot应用程序中的相互SSL连接到NetScaler端点。 我能够通过OpenSSL在命令行上按预期连接以下命令: openssl s_client -connect xxxx.xxxx.xxxx.xxx:443 -cert cert.cer -key private.key 这给出了以下输出: CONNECTED(00000003) — Certificate chain 0 s:/C=GB/ST=London/L=London/O=XXXX XXXXX XXX/OU=Infrastructure Services/CN=sit1.xxxxxxx.xxxxxxx.com i:/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 Secure Server CA – G4 1 s:/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 Secure Server CA – G4 i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. – For authorized use […]

为什么SSLSocketFactory缺少setEnabledCipherSuites?

SSLSocketFactory提供了getDefaultCipherSuites (在套接字上默认启用的密码)和getSupportedCipherSuites (如果需要,可以启用密码)。 但是, SSLSocketFactory不提供setEnabledCipherSuites来配置密码列表一次以在后续套接字上提供首选项。 事实上,我认为将setEnabledCipherSuites作为SSLSocket一部分确实使得wok流程复杂化。 例如, HttpsURLConnection不提供getSocket ,它确实打破了这个流程: … SSLContext context = SSLContext.getInstance(“TLS”); context.init(null, trustManager.getTrustManagers(), null); HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); connection.setSSLSocketFactory(context.getSocketFactory()); 我认为关于SSLContext因为它有像getDefaultSSLParameters和getSupportedSSLParameters这样的方法。 我正试图为(in)能力提出一个合理的安全工程理由,但我不能。 也许是决定软件工程的原因。 (我怀疑这是一个很好的理由,而且我目前缺乏洞察力)。 为什么Java缺乏配置SSLSocketFactory的能力? 它显然是一个设计决策,我试图理解为什么它是以牺牲图书馆相关部分的安全性为代价的。

警告:建议不要在没有服务器身份validation的情况下建立SSL连接

您好我试图通过使用eclipse和tomcat的java servlet连接到mysql数据库,但是我发出以下错误:“警告:不建议在没有服务器身份validation的情况下建立SSL连接”。我添加了“useSSL = false?” 到连接url但仍然得到相同的错误。任何建议? servlet的代码是: package com.simpleWebApplication.servlet; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(“/register”) public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public RegisterServlet() { super(); // TODO Auto-generated constructor […]

Java密钥库中的中间CA证书

我的Dev OPs团队希望在我们的Java密钥库中使用中级CA证书。 我认为在密钥库中添加中间证书与添加“常规证书”的过程相同,对吗? 我需要注意哪些“陷阱”? 另外,如何在测试中validationJava是否使用中间证书而不是使用CA进行检查?

如何在Java SSLEngine中设置自定义DH组以防止Logjam攻击?

对TLS的新Logjam攻击基于常见的DH组。 此链接建议为每个服务器生成一个新的自定义2048位DH组。 如何在使用SSLEngine的Java服务器代码中设置自定义DH组? ETA:如果我只使用短暂的DH密码套件,即使用DHE或ECDHE而不使用DH或ECDH的密码套件,我会安全吗? 或者这是无关的?

使用有效的客户端证书时HttpClient 403错误

我正在尝试使用Java在网站上自动执行某些任务。 我有一个有效的网站客户端(当我使用firefox登录时工作),但当我尝试使用http客户端登录时,我一直收到403错误。 请注意,我希望我的信任商店信任任何东西(我知道它不安全,但此时我并不担心)。 这是我的代码: KeyStore keystore = getKeyStore();//Implemented somewhere else and working ok String password = “changeme”; SSLContext context = SSLContext.getInstance(“SSL”); KeyManagerFactory kmfactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); kmfactory.init(keystore, password.toCharArray()); context.init(kmfactory.getKeyManagers(), new TrustManager[] { new X509TrustManager() { @Override public void checkClientTrusted(java.security.cert.X509Certificate[] arg0, String arg1) throws CertificateException { } @Override public void checkServerTrusted(java.security.cert.X509Certificate[] arg0, String arg1) throws CertificateException { […]

如何设置TLS Server以在Spring集成中validation客户端?

请参阅使用SSL / TLS运行客户端 。 这解释了服务器执行客户端身份validation的方案。 我正在使用Spring Integration来处理TLS连接。 我的spring-context文件是: 我的服务器正在接受SSL连接并使用我的服务器和客户端上安装的证书进行处理。 我不确定是否为客户端身份validation设置了上述spring配置。 是在SSL transaport级别还是在应用程序代码中完成的客户端身份validation?

如何编写在它们之间使用相互ssl身份validation的java客户端和服务器应用程序?

我正在构建两个必须使用SSL双向身份validation进行通信的java应用程序,我使用此处的指令来创建客户端和服务器证书。 然后我在服务器应用程序中构建了一个webService,如下所示: @RequestMapping(value=”/testssl”, method = RequestMethod.POST, produces=”application/json”, consumes=”application/json”) @ResponseBody public String testSSl(@RequestBody String name) { return = successfully tested; } 我编辑了tomcat server.xml文件以启用SSL,如下所示: 并将server.jks放在Tomcat / Jenkins-Tomcat / keystore / server.jks中 然后我使用spring RestTemplate构建客户端应用程序以通过SSL调用此Web服务,如下所示: Properties props = new Properties(); props.put(“javax.net.ssl.trustStore”, “D:\\test\\server.jks”); props.put(“javax.net.ssl.trustStoreType”, “jks”); props.put(“javax.net.ssl.trustStorePassword”, “server123”); props.put(“javax.net.ssl.keyStore”, “D:\\test\\client.jks”); props.put(“javax.net.ssl.keyStoreType”, “jks”); props.put(“javax.net.ssl.keyStorePassword”, “client123”); props.put(“java.protocol.handler.pkgs”, “com.sun.net.ssl.internal.www.protocol”); props.put(“ws.ssl.loose.disableHostnameVerification”, “true”); System.setProperties(props); SSLContext sslcontext […]