在禁用SSL认证的Java程序的安全隐患(Security risks in disabling S

2019-08-01 22:57发布

我们的团队抓取网站来保持我们的信息是最新的。 我也陷入了爬行HTTPS页面时,安全异常 。 问题是,Java的有问题来自网页接受的自签名的证书。

而不是保持证书的列表接受(这可能是很难在未来维持),我使用的是由周围提供neu242工作, 禁用SSL证书验证 。

public static void disableCertificateValidation() 
{
    // Create a trust manager that does not validate certificate chains
      TrustManager[] trustAllCerts = new TrustManager[] { 
        new X509TrustManager() {
          public X509Certificate[] getAcceptedIssuers() { 
            return new X509Certificate[0]; 
          }


        @Override
        public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException
        {
            // TODO Auto-generated method stub

        }
        @Override
        public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException
        {
            // TODO Auto-generated method stub

        }
      }};

      // Ignore differences between given hostname and certificate hostname
      HostnameVerifier hv = new HostnameVerifier() {

        @Override
        public boolean verify(String arg0, SSLSession arg1)
        {
            // TODO Auto-generated method stub
            return true;
        }
      };

      // Install the all-trusting trust manager
      try {
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        HttpsURLConnection.setDefaultHostnameVerifier(hv);
      } catch (Exception e) {}
}

当然,这是冒充显著的安全风险。 但是,如果我只使用这个代码与我的下载程序(下载图像和PDF文档的程序),而我没有使用该程序的敏感信息发送,存在哪些安全隐患? 据我了解,这种信任管理器将只对正在运行的JVM(运行程序在操作系统级别将不会禁用证书验证服务器)设置。 此外,如果我对图像和文档的请求被拦截,我的代码将尝试分别形成响应为图像或PDF格式,而不会推出任何恶意软件。 有我缺少某些地方的安全风险?

Answer 1:

你所面临的风险是,一个恶意服务器可以把你自己和源服务器(这是一个中间人攻击)之间。 换句话说,你会认为你收到来自真实服务器的文件,但事实上,你会收到来自海盗服务器的文件。 所以,这取决于类型的文件,你跟他们做什么?



Answer 2:

您可以禁用证书验证。 你的沟通仍然是安全的,你只是将无法验证服务器的身份。 我看不出有什么问题。



Answer 3:

唯一现实的“堵截”的情况是当客户端计算机是在随机位置的无线网络,例如咖啡馆上。 因为你刮的服务器显然不是,在实践中是禁用证书验证零风险。



文章来源: Security risks in disabling SSL certification for Java program