java - Android 从设备设置安装自签名证书 SSL VS 以编程方式安装

标签 java android ssl soap

我关注了this guide在生成自签名 SSL 证书时, 并且我成功制作了 .cer 和 .bks。然而:

使用设备设置安装 .cer 文件是否与使用 CODE 安装 .bks 文件相同?

我遇到了一个问题,我的手机浏览器可以毫无问题地接受我的网站。但是,当我运行我的应用程序以从同一 website/myservice.ASMX 的服务查询 soap 请求时,它会给出“主机名未验证”,如果使用 trustmaster“接受所有主机和证书”,我会收到错误消息405

代码访问网站:

    SoapObject Request = new SoapObject(NAMESPACE, method);
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.dotNet = true;
    PropertyInfo password = new PropertyInfo();
    password.setName(ID);
    password.setValue(pass);
    password.setType(String.class);
    Request.addProperty(password);
    envelope.setOutputSoapObject(Request);
    HttpTransportSE androidHttpsTransport = new HttpTransportSE("https://"+MAIN_REQUEST_URL+":"+sPORT+SERVICELOCATION);
    makeFileOffline(androidHttpsTransport.getHost() +"\n"+ SERVICELOCATION,"AgriHTTP" );
     try {

        //FakeX509TrustManager.allowAllSSL();<< When enabled it gives 405 

        androidHttpsTransport.call(NAMESPACE+method, envelope);

        SoapPrimitive resultsString = (SoapPrimitive) envelope.getResponse();

        String webServiceResult = resultsString.toString();


    } catch (IOException e) {

        Log.d(e.toString(),"LogCat" );
        e.printStackTrace();
    } catch (XmlPullParserException e) {

        e.printStackTrace();
    }

最佳答案

通过“设置”安装的证书可以被 Android 设备本身和 Google 或系统制作的任何应用程序看到。但是您的应用程序看不到证书,这就是为什么您需要在自己的应用程序中通过代码导入或安装它。

关于java - Android 从设备设置安装自签名证书 SSL VS 以编程方式安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43785853/

相关文章:

java - 如何判断堆转储中字符串与 char[] 的比率是否表明存在问题?

java - NumberFormatException 无效 int ""

android - 使用暂停和恢复按钮下载文件?

使用 Firebase 的 Android 通知

c# - 如何比较证书指纹

java - 我在哪里可以找到 java truststore 文件?

ssl - openssl 是否在没有基本限制的情况下拒绝自签名证书?

java - 加载属性文件给出 null

java - war 文件中出现 NoClassDefFoundError 异常

java - 如何使Java ServiceActivator在JUnit Test中可见?