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

标签 java web-services ssl self-signed overriding

Web 服务基于 SSL,它具有自签名证书,托管在远程系统中。我已经创建了一个访问该 Web 服务的客户端。这是通过将证书添加到 key store programatically 来完成的。 .

现在我听说,没有必要将证书添加到 keystore 以访问自签名 Web 服务。 相反,我们可以通过覆盖某些方法来禁用证书检查。这是真的?这些方法是什么?请帮忙。

最佳答案

这应该足够了。我在针对没有正确签名证书的测试和登台服务器测试代码时使用它。 但是,您真的应该认真考虑在生产服务器上获取有效的 SSL 证书。没有人愿意被窃听并侵犯他们的隐私。

SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, new TrustManager[] { new TrustAllX509TrustManager() }, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier( new HostnameVerifier(){
    public boolean verify(String string,SSLSession ssls) {
        return true;
    }
});

还有这个。

import javax.net.ssl.X509TrustManager;
import java.security.cert.X509Certificate;

/**
 * DO NOT USE IN PRODUCTION!!!!
 * 
 * This class will simply trust everything that comes along.
 * 
 * @author frank
 *
 */
public class TrustAllX509TrustManager implements X509TrustManager {
    public X509Certificate[] getAcceptedIssuers() {
        return new X509Certificate[0];
    }

    public void checkClientTrusted(java.security.cert.X509Certificate[] certs,
            String authType) {
    }

    public void checkServerTrusted(java.security.cert.X509Certificate[] certs,
            String authType) {
    }

}

祝你好运!

===更新===

我只是想指出有一个服务叫 Let's Encrypt它可以自动生成和设置几乎所有人都认可的 SSL/TLS 证书,而且完全免费!

关于Java:禁用 SSL 证书检查的覆盖函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19723415/

相关文章:

java - 用颜色填充复杂图像

java - 开箱即用 - Web 服务 - 数据库 - 网页/移动访问

java - SOAPHandler handleFault

android - 使用 PKCS#11 的相互客户端身份验证

python - SSLv3 警告与 urllib2 的握手失败

java - 如何在 JasperReports 中将字段从父列表传递到子列表?

java - 验证构造函数中的数据并引发异常

php - 使用 MySQL DB 调用的单个页面是否需要 SSL 证书?

java - 如何在Tomcat中获取属性文件

web-services - 优点和缺点 - 在同一台服务器上运行(预定)后台任务和 Web 请求处理