我正在做一个https帖子,我得到ssl异常的例外不可信服务器证书.如果我做正常的http它工作得很好.我必须以某种方式接受服务器证书吗?
我已经查看了有关如何通过HTTPSAndroid从使用自签名证书的服务器检索内容的各种帖子.然而,他们似乎都没有工作 - 他们都没有删除
javax.net.ssl.SSLException:不受信任的服务器证书消息.
不能选择将服务器修改为具有可信证书,也不能使服务器证书与服务器的IP地址匹配.
请注意,服务器没有DNS名称,它只有一个IP地址.GET请求看起来像这样:
https://username:password@anyIPAddress/blabla/index.php?param=1¶m2=3
Run Code Online (Sandbox Code Playgroud)
我完全清楚这种解决方案很容易发生中间人攻击等.
因此,解决方案必须忽略对证书缺乏信任,并忽略主机名不匹配.
有没有人知道使用Java for Android的代码?
有很多尝试在stackoverflow.com上解释这个,以及大量的代码片段,但它们似乎不起作用,并且没有人提供一个解决这个问题的代码块,据我所见.知道某人是否真的解决了这个问题,或者Android是否只是阻止了不受信任的证书,这将会很有趣.
我正在开发一个Android应用程序,需要通过Http客户端访问QuickPay的服务(" https://secure.quickpay.dk/form ").但是在访问页面时我一直都会遇到错误.更具体地说,我收到"No Peer Certificate"错误消息.我已经尝试了几种不同的东西:我尝试将根证书添加到我的密钥库,并在连接时使用此密钥库,遵循以下过程:将证书添加到密钥库.我也尝试接受所有证书,按照这里提出的方法:接受android的证书.我已成功连接到其他https网站,但似乎无法连接到此网站.我尝试过不同的Android设备(1.6,2.2和2.3.3).任何人都可以成功连接到quickpay的网站,或者任何人都可以提出可能的解决方案/解决方案吗?
//更新:如果我使用我的WebView:付款窗口示例访问此站点,并按下其中一个按钮(基本上只是启动带有一些预定义变量的http帖子)我可以在webview上连接到该站点Android 2.3.3.此外,我发现如果我尝试在Android 3.1上启动上述应用程序,我会收到该网站的回复!有什么建议?
public class MyHttpClient extends DefaultHttpClient {
final Context context;
public MyHttpClient(Context context) {
this.context = context;
loadHttps();
}
private void loadHttps() {
String url = "https://secure.quickpay.dk/form";
HttpPost httpPost = new HttpPost(url);
try {
System.out.println("Executing");
this.execute(httpPost);
} catch (UnsupportedEncodingException e) {
System.out.println(e.getMessage());
} catch (ClientProtocolException e) {
System.out.println(e.getMessage());
} catch (IOException e) {
System.out.println(e);
}
}
@Override
protected ClientConnectionManager createClientConnectionManager() {
SchemeRegistry registry = new SchemeRegistry();
registry.register(new …Run Code Online (Sandbox Code Playgroud)