当我调用Web服务(SSL)时出错

时间:2014-01-13 15:51:43

标签: java web-services ssl

当我调用我的Webservice时,我收到如下错误,请解释一下我如何解决这个问题。

错误是:

  

fault描述:nulldetail:faultCode:Server.Processing
  faultString:'javax.net.ssl.SSLHandshakeException:General SSLEngine   问题'faultDetail:'null'

我在本地使用tomcat服务器。

我正在使用1.6 Java Runtime Environment,我将Webservice SSL添加到:

jdk1.6>jre>lib>security>cacerts

但没有改变。我是否需要配置我的tomcat服务器

1 个答案:

答案 0 :(得分:1)

我解决了这个问题。您不需要对服务器进行任何配置。或JRE。 只需把它代码

       public String retrieveMngTracking(ArrayList paramList) throws Exception {

             //ı added for SSL
    HostnameVerifier hv = new HostnameVerifier() {
        public boolean verify(String urlHostName, SSLSession session) {
            System.out.println("Warning: URL Host: " + urlHostName
                    + " vs. " + session.getPeerHost());
            return true;
        }
    };



    ParamMap paramMap = FlexUtil.getParamMap(paramList);

    URL url = new URL(paramMap.getString("url"));

    //Call this function for SSL
    trustAllHttpsCertificates();
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setDoInput(true);
    conn.setDoOutput(true);
    conn.setUseCaches(false);
    conn.setReadTimeout(20000);
    conn.setRequestMethod("POST");
    conn.setRequestProperty("Content-type",
            "application/x-www-form-urlencoded");

    OutputStream os = conn.getOutputStream();
    OutputStreamWriter wr = new OutputStreamWriter(os);

    wr.write("pMusteriNo=" + paramMap.getString("pMusteriNo"));
    wr.write("&pSifre=" + paramMap.getString("pSifre"));
    wr.write("&pSiparisNo=" + paramMap.getString("pSiparisNo"));
    wr.write("&pKriter=" + paramMap.getString("pKriter"));

    wr.flush();

    wr.close();
    os.close();

    StringBuffer sb = new StringBuffer();
    BufferedReader br = new BufferedReader(new InputStreamReader(
            conn.getInputStream()));

    String response = "";
    for (;;) {
        String line = br.readLine();
        if (line == null)
            break;
        response += line + "\n";
    }
    br.close();

    conn.disconnect();

    return response;
}
     public static class miTM implements javax.net.ssl.TrustManager,
        javax.net.ssl.X509TrustManager {
    public java.security.cert.X509Certificate[] getAcceptedIssuers() {
        return null;
    }

    public boolean isServerTrusted(
            java.security.cert.X509Certificate[] certs) {
        return true;
    }

    public boolean isClientTrusted(
            java.security.cert.X509Certificate[] certs) {
        return true;
    }

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

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

private static void trustAllHttpsCertificates() throws Exception {

    // Create a trust manager that does not validate certificate chains:

    javax.net.ssl.TrustManager[] trustAllCerts =

    new javax.net.ssl.TrustManager[1];

    javax.net.ssl.TrustManager tm = new miTM();

    trustAllCerts[0] = tm;

    javax.net.ssl.SSLContext sc =

    javax.net.ssl.SSLContext.getInstance("SSL");

    sc.init(null, trustAllCerts, null);

    javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(

    sc.getSocketFactory());

}

好的,我本地服务器上的所有内容都是tomcat。但当ı想要部署Weblogic服务器同样的错误给予。请解释一下为什么一切都在我的本地工作但现在是weblogic服务器问题。

相关问题