WP8,使用带有自签名证书的SOAP

时间:2013-02-22 15:33:45

标签: c# soap certificate windows-phone-8 self-signed

我可以通过SOAP使用Web服务。但是,我想使用带有自签名证书的https连接。

如何强制我的应用使用我的证书?我能够通过Android实现the same thing

谢谢你,马丁。

1 个答案:

答案 0 :(得分:0)

我的一个项目的工作示例。 我不确定它是否适用于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"))
            {
                ...
            }
        }
    }
}