我正在开发一个进行REST服务调用的Windows Phone 7应用程序。承载Web服务的第三方在当前环境中具有无效证书。当我点击Firefox中的URL时,我收到有关证书的警告,我被问到是否要继续。我也使用Poster FF扩展来测试呼叫。如果我首先接受Firefox中的无效证书,它适用于Poster。如果我不这样做,那么海报就不会提出要求。
在我的WP7模拟器中,我根本无法提出请求。我在EndGetResponse方法中获得了404。我提出的请求与海报相同,所以我知道请求没有任何问题。我使用相同的代码(没有涉及证书)成功地击中了另一个Web服务,所以我不认为这是代码。我唯一能想到的是WP7不允许对无效证书的请求。有没有人有这种情况的经验?有什么方法吗?
有没有办法告诉我的应用程序接受所有通信,即使证书无效?
答案 0 :(得分:1)
很遗憾没有办法在手机上这样做。通常,即在桌面上,这一简单的代码行将禁用证书检查。
System.Net.ServicePointManager.ServerCertificateValidationCallback = (se, cert, chain, sslError) => { return true; };
如果您查看手机上的ServicePointManager,则无法进行回调。这是arrrrse的巨大痛苦。
您是否考虑过写信给服务所有者并询问他们为什么是网络公民? (基本上,你在这里看到的是网络安全,无论好坏)
正如Matt所说,您可以在Web服务器上编写简单的中继。它不一定是特殊服务,但可能只是一个为您调用并且吐出RAW文本或XML的网页。您的手机客户端只需获取此页面并手动选择响应。
哪里有遗嘱就有办法。
路
答案 1 :(得分:1)
您需要在手机上安装发卡方的根CA证书。
您可以通过将RootCA通过电子邮件发送给手机用户来完成此操作。他们点击了附件,它会提示他们询问是否要在手机上安装证书。
完成后,您的请求应该通过。
我不相信有一种方法可以在您的应用中以编程方式执行此操作。
答案 2 :(得分:0)
我不知道如何在手机上安装其他证书。
在这种情况下,我会在您的应用和第三方网站之间创建一个代理服务,然后让您的应用调用它。如果需要,可以将代理置于有效证书之后。