我能够通过 SOAP 使用 Web 服务。但是,我想使用带有自签名证书的 https 连接。
如何强制我的应用使用我的证书?我能够用 Android实现同样的目标。
谢谢你,马丁。
我的一个项目中的一个工作示例。我不确定它是否可以在 WP8 上运行,但在桌面上一切正常。
这里是服务类。
internal class PermissiveCertificatePolicy
{
private string _subjectName;
private static PermissiveCertificatePolicy _currentPolicy;
public PermissiveCertificatePolicy(string subjectName)
{
_subjectName = subjectName;
ServicePointManager.ServerCertificateValidationCallback += RemoteCertValidate;
}
public static void Enact(string subjectName)
{
_currentPolicy = new PermissiveCertificatePolicy(subjectName);
}
private bool RemoteCertValidate(object sender, X509Certificate cert,
X509Chain chain, SslPolicyErrors error)
{
return cert.Subject == _subjectName;
}
}
以下是使用示例:
namespace WcfClient
{
internal class Program
{
private const string RCertName = "CN=WMSvc-WIN-R0NU6K5QG87";
private static void Main(string[] args)
{
PermissiveCertificatePolicy.Enact(RCertName);
using (MyClient proxy = new MyClient("Ws2007HttpBinding_IHistory"))
{
...
}
}
}
}