Tag: ssl

Java中的SSL证书validation

假设我有两个我写的Java应用程序: Ping.jar和Pong.jar ,它们被部署并在两个独立的服务器上运行( Ping.jar部署到srv-01.myorg.com , Pong.jar部署到srv-02.myorg.com ),这两个应用程序需要通过SSL相互通信(双向)。 我们还假设每个应用程序都有自己的SSL证书。 作为Java程序员,我如何编写Ping和Pong代码以validation彼此的SSL证书? 每个CA都提供某种RESTful API,我可以使用HttpClient吗? Java是否有自己的证书validationAPI? 是否有我可以使用的开源第三方JAR或服务? 当我在网上搜索这个时,我感到很惊讶。

获取javax.net.ssl.SSLException:收到致命警报:使用Jsoup抓取数据时的protocol_version

我试图使用Jsoup从站点获取数据。 链接到该网站是点击这里 ! 这是我获取数据的代码。 ` // WARNING: do it only if security isn’t important, otherwise you have // to follow this advices: http://stackoverflow.com/a/7745706/1363265 // Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager(){ public X509Certificate[] getAcceptedIssuers(){return null;} public void checkClientTrusted(X509Certificate[] certs, String authType){} public void checkServerTrusted(X509Certificate[] certs, String […]

SSL无法在Android 2.2上运行(仅限2.3)

我在调用httpsURLConnection.getInputStream()时在LogCat上得到这个 SSL握手失败:SSL库失败,通常是协议错误错误:14094412:SSL例程:SSL3_READ_BYTES:sslv3警报错误证书(external / openssl / ssl / s3_pkt.c:1127 0x29eb40:0x00000003) 我在Andorid 2.3上进行了测试,效果很好。 我的服务器要求客户端validation 也许FROYO不支持这种握手……我不知道…… 我也尝试过使用httpclient。 在每种情况下都失败…… private void process() throws Exception { char[] pass = “clientpass”.toCharArray(); InputStream ksStream = getAssets().open(“clientKeyStore.bks”); KeyStore keyStore = KeyStore.getInstance(“BKS”); keyStore.load(ksStream, pass); KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); kmf.init(keyStore, pass); ksStream.close(); X509TrustManager[] tm = new X509TrustManager[] { new X509TrustManager() { public void checkClientTrusted(X509Certificate[] chain, […]

使用Java8的SNI客户端之谜

我有一个Apache Web服务器,它运行几个具有不同证书和SNI的TLS虚拟主机。 我可以使用curl访问各种虚拟主机(假设SNI使其工作)。 我也可以使用一个基本上只是在URL上的openConnection()的命令行Java程序来访问它们。 在我的Tomcat应用程序中,基本相同的客户端代码访问与客户端相同的Apache服务器,但总是以默认证书(defaulthost.defaultdomain)结束,而不是在URL中指定的虚拟主机的证书尝试访问。 (这会产生一个SunCertPathBuilderException – 基本上它无法validation证书的证书路径,当然这是真的,因为它是非官方证书。但是不管怎么说都不应该使用默认证书。) 就像我的应用程序/ Tomcat中的SNI已在客户端停用一样。 我不知道为什么我的应用程序和命令行之间应该有不同的行为; 相同的JDK,相同的主机等 我找到了属性jsse.enableSNIExtension ,但我确认它在两种情况下都设置为true。 问题: 任何想法,甚至是狂野的想法,为什么这两个程序表现不同? 有什么想法我会如何调试这个? 这是Arch Linux on 86_64,JDK 8u77,Tomcat 8.0.32。

使用Java忽略SSL证书错误

Apache Http客户端。 您可以在此处查看相关代码: String url = “https://path/to/url/service”; HttpClient client = new HttpClient(); PostMethod method = new PostMethod(url); // Test whether to ignore cert errors if (ignoreCertErrors){ TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager(){ public X509Certificate[] getAcceptedIssuers(){ return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) {} public void checkServerTrusted(X509Certificate[] certs, String authType) {} } }; […]

使用spring boot实现2路SSL

我正在创建一些宁静的Web服务,并使用Spring-Boot创建一个嵌入式tomcat容器。 其中一个要求是实现双向SSL。 我一直在查看HttpSecurity对象,并且可以使用它来仅通过SSL通道运行web服务: – @Override protected void configure(HttpSecurity http) throws Exception { System.out.println(“CONFIGURED”); http // … .requiresChannel() .anyRequest().requiresSecure(); } 我似乎无法找到的方法是只允许提供有效客户端证书的应用程序访问Web服务。 我只有SSL的基本知识,所以即使是正确方向的一般指针也会受到赞赏。 正在部署的服务器将具有混合的应用程序 – 这是唯一需要使用双向SSL锁定的应用程序。 我真正想要的是一种锁定单个应用程序只接受客户端证书的方法。

如何忽略javamail中的服务器证书错误

当我使用imaps连接到我的imap服务器时,它很糟糕。 你能告诉我如何忽略javamail中的服务器证书错误 Exception in thread “main” javax.mail.MessagingException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:665) at javax.mail.Service.connect(Service.java:295) at javax.mail.Service.connect(Service.java:176) at App20110204.main(App20110204.java:31) Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path […]

Java.nio频道和TLS

如何使用TLS保护Java SocketChannel , ServerSocketChannel或甚至是DatagramChannel ? 我知道有一些框架( #1 #2 )可以做广告,但我想知道是否可以单独使用纯Java标准库来实现这一点。

PKIX路径构建在Java应用程序中失败

在将我的应用程序从Windows 2000移动到Windows 2008 R2 Server之后,我一直在努力让我的应用程序运行近一周。 步骤: 已安装Java JDK 1.7.0_25 将系统环境变量JAVA_HOME为C:\Progra~1\Java\jdk1.7.0_25\ 使用keytool将证书导入cacerts 确保证书存在于keytool with -list 。 我试图用InstallCert重复第3步 ,以确保我没有弄乱任何东西。 上面的方法没有解决我的问题,所以我尝试以编程方式进行: System.setProperty(“javax.net.ssl.trustStore”, “C:/Progra~1/Java/jdk1.7.0_25/jre/lib/security/cacerts”); System.setProperty(“javax.net.ssl.trustStorePassword”, “changeit”); 仍然没有任何运气。 我被卡住了,不太确定从这里走哪个方向。 堆栈跟踪: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1886) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1341) at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:153) at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868) […]

在Java中针对CAvalidationX.509证书

可以说我有这样的东西(客户端代码): TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() { @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } @Override public void checkClientTrusted( java.security.cert.X509Certificate[] certs, String authType) { } @Override public void checkServerTrusted( java.security.cert.X509Certificate[] certs, String authType) { } } }; SSLContext sslc = SSLContext.getInstance(“TLS”); sslc.init(null, trustAllCerts, null); SocketFactory sf = sslc.getSocketFactory(); SSLSocket s = (SSLSocket) sf.createSocket(“127.0.0.1”, […]