当前位置: 首页 > 知识库问答 >
问题:

禁用信任管理器后使用https web服务时出错

松献
2023-03-14

即使禁用TrustManager后,我也会出现以下错误

javax。网ssl。例外:太阳。安全验证器。ValidatorException:PKIX路径生成失败:sun。安全供应商。certpath。SunCertPathBuilderException:找不到请求目标的有效证书路径

我正在使用下面的web服务代码。

public class HttpsDisable {


public static void disableCertificateValidation() {
      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) { }
        }
      };
      try {
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new java.security.SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
      } catch (Exception e) {
          e.printStackTrace();
      }
    }


public static void main(String[] args)  {


                //Now you can access an https URL without having the certificate in the truststore
                try {
                 disableCertificateValidation();
                 URL url = new URL("https://162.19.122.114/service.asmx?wsdl");
                 System.out.println("url ================ "+url);

                 String sWebserviceurl = "https://172.17.134.214/service.asmx?wsdl";
                 String sXMLInput = "<KeedAn><PrAge>26</PrAge></KeedAn>";
                    AnalysisServiceService sl = new AnalysisServiceServiceLocator();
                    AnalysisService service =  sl.getAnalysisService(new URL(sWebserviceurl));
                    String in = service.getNeedProdRes(sXMLInput);
                    System.out.println("web service output ----------\n" + in);

                } catch (MalformedURLException e) {
                    e.printStackTrace();
                }
                catch (Exception e) {
                    e.printStackTrace();
                }

}   
}

你能告诉我哪里出了问题吗,因为上面的代码不起作用,引发了上面的异常。我还保存了。jre/lib/中的证书文件。证书路径。

共有1个答案

安明亮
2023-03-14

试试这段代码,它会在控制台中禁用并打印响应,

String send = "https://www.example.com";
        URL url = new URL(send);
        TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager()
        {
            public java.security.cert.X509Certificate[] getAcceptedIssuers()
            {
                return null;
            }

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

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

        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new java.security.SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

        IOUtils.copy(url.openStream(), System.out);
 类似资料:
  • 目前,我正在开发一个新的android项目,它使用后台服务。因为android版本 我的通知服务如下 我使用以下代码启动AlarmHandler 我还注册了以下广播接收器 我的问题是有时它会跳过我的通知。时间安排为晚上10:00和早上7:00。收到晚上10点的通知(请注意,我在晚上10:00使用电话或在晚上10:00前几分钟使用)。但并非所有时间都收到上午7:00的通知。还要注意的是,我每天都需要

  • 在启动节点管理器之后,当我要启动startWeblogic时。sh发生这种情况时,服务器无法启动。(用户名、密码正确) 以行开始WLS:home/app/oracle/java/jdk1.8.0_171/bin/java-server-Xms256m-Xmx512m-XX:CompileThreshold=8000-cp/home/12c/app/oracle/product/12.2.1/wls

  • 我使用keytool(来自jdk)将mycert.cer文件转换为mycert.jks,并且我正在JMeter的SSL管理器中使用它。将实现设置为Java。当我运行我的脚本时,它弹出JKS密码(输入jks的密码,这是在转换过程中设置的),然后结果显示为“应用程序不可用”(响应代码- 503)。但是我可以看到,应用程序或endpoint没有问题,因为它在Load Runner和postman中工作。

  • 我试图为我的应用程序启用Spring Boot管理服务器。默认设置工作正常,但当我尝试启用安全性时,出现以下错误: 应用程序无法启动 说明: 无法注册在类路径资源[org/springframe/Security/config/注解/web/配置/WebSecurityConfiguration.class]中定义的bean转换服务后处理器。已经在类路径资源[org/springframe/Sec

  • 什么是 InfluxDB InfluxDB是一个易用性和扩展性非常好的数据库系统,它非常适合适用于性能数据存储,事件以及实时分析等场景。它内置基于HTTP的API接口,为数据存储和查询提供了极大的便利。 在 DaoCloud 服务集成创建 InfluxDB 服务。 登录 DaoCloud 控制台,选择「服务集成」。 在「Dao服务」里选择 InfluxDB 服务。 点击 「创建服务实例」。 输入服

  • 什么是 PostgreSQL PostgreSQL 是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据