Android kSOAP2 SSL自签名证书“;未满足安全要求-消息中没有安全标头;

Android kSOAP2 SSL自签名证书“;未满足安全要求-消息中没有安全标头;,android,ssl,ksoap2,certificate,self-signed,Android,Ssl,Ksoap2,Certificate,Self Signed,连接到SSL Web服务Apache Tomcat时出现问题,Java SE客户端连接正常,但Android客户端不想连接,并显示以下错误之一:1。“未满足安全要求-消息中没有安全标头”,2。“Java.lang.RuntimeException:Java.lang.RuntimeException:错误:0407006A:rsa例程:rsa_padding_check_PKCS1_type_1:块类型不是01(SHA-1) “要连接,我描述以下代码: private SSLSocketFact

连接到SSL Web服务Apache Tomcat时出现问题,Java SE客户端连接正常,但Android客户端不想连接,并显示以下错误之一:1。“未满足安全要求-消息中没有安全标头”,2。“Java.lang.RuntimeException:Java.lang.RuntimeException:错误:0407006A:rsa例程:rsa_padding_check_PKCS1_type_1:块类型不是01(SHA-1) “要连接,我描述以下代码:

private SSLSocketFactory getSSLSocketFactory() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
    KeyStore trusted = KeyStore.getInstance("PKCS12");
    InputStream in = activity.getResources().openRawResource(R.raw.client_keystore);
    try {
        trusted.load(in, "blablabla".toCharArray());
    } catch (CertificateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally {
        try {
            in.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
    tmf.init(trusted);
    SSLContext context = SSLContext.getInstance("SSLv3");
    context.init(null, tmf.getTrustManagers(), null);
    return context.getSocketFactory();
}

public String SendRecieveMessage(String xmlData, String nameXML, String methodName, String methodAction) {

    HttpsTransportSE httpTransport = new KeepAliveHttpsTransportSE("hostname", 8443, "/blablabla/blablabla?wsdl", 1000);
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    SoapObject request = new SoapObject(activity.getResources().getString(R.string.SOAP_NAMESPACE), methodName); // set
    // request
    Log.e("Sending SOAP", xmlData);
    String base64 = base64Coder.encodeString(xmlData);
    request.addProperty(nameXML, base64); 
    envelope.setOutputSoapObject(request); // prepare request
    try {
        ((HttpsServiceConnectionSE) httpTransport.getServiceConnection()).setSSLSocketFactory(getSSLSocketFactory());
    } catch (KeyManagementException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (KeyStoreException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (NoSuchAlgorithmException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    SoapPrimitive result = null;
    try {
        httpTransport.call(methodAction, envelope);
        result = (SoapPrimitive) envelope.getResponse(); // get
        if (result != null) {
            base64 = base64Coder.decodeString(result.toString());
        } else {
            base64 = null;
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        Log.e("ERROR", "SOAPSendRecieve: " + e.getMessage());
        base64 = null;
    } catch (XmlPullParserException e) {
        // TODO Auto-generated catch block
        Log.e("ERROR", "SOAPSendRecieve: " + e.getMessage());
        base64 = null;
    } catch (IllegalArgumentException e) {
        Log.e("ERROR", "SOAPSendRecieve: " + e.getMessage());
        base64 = null;
        }
    } finally {
        request = null;
        result = null;
    }
    return base64;
}
通过Blabla.jks中的服务器将其转换为Blabla.pfx(PKCS#12),我尝试使用两个程序:“KeyStore Explorer”和“Portecle”,还尝试了“BKS”格式,同样的结果,官方网站上的示例中描述的SSL kSOAP2,可能是什么问题,这是一个错误,因为服务器设置不正确或客户端可能有问题

请求和响应转储示例:

问题得到解决,服务器部署在WSIT库中,它需要保护安全头,即“用户”和“密码”,一条SOAP消息,因为我没有指定这些参数,所以我没有连接的服务器在消息头中给出了描述,谢谢大家的帮助。

你能发布完整的堆栈跟踪吗?看起来证书可能没有被正确解析,PKCS#12文件中有什么?发布了dump kSOAP2,在日志Tomcat Catalina中,我看到客户端正在尝试连接,但在web服务的日志中是空的,从dump中可以看出,Tomcat不理解客户端只是无法理解为什么…如果无法建立SSL连接,请求从未发送到Web服务器。你能显示客户端(Android)的完整堆栈跟踪吗?问题已经解决,服务器部署在库WSIT中,它需要保护安全头,即“用户”和“密码”,一条SOAP消息,因为我没有指定这些参数,我没有连接的服务器在消息头中给出了描述谢谢。酷,很高兴你让它工作了。仍然
RSA\u padding\u check\u PKCS1\u type\u 1:块类型不是01(SHA-1)
错误似乎无关。你是怎么修好的?