我关注了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/