c# - 使用 SSL 从 C# 应用程序调用 WebService

标签 c# web-services ssl

在我的 C# 桌面应用程序中,我调用用 php 开发的 Web 服务。我可以拿到CA文件。我不知道如何通过 SSL 调用 Web 服务并验证证书。我必须通过服务器传递什么以及期望从服务器响应什么以进行身份​​验证?老实说我不知道​​。

编辑: 引用自:http://weblogs.asp.net/jan/archive/2003/12/04/41154.aspx

//调用网络服务之前 System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();

public class MyPolicy : ICertificatePolicy
{
    X509Certificate clientCert = null;

    public MyPolicy() {
        clientCert = X509Certificate.CreateFromSignedFile(HTTPUtility.CERT_FILE);
    }

    public bool CheckValidationResult(ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem)
    {
        Console.WriteLine("********* Into CheckValidationResult : " + certificate.ToString());

        Console.WriteLine("####### Client Certificate : " + clientCert.ToString() + "\n" + "Subject = " + clientCert.Subject);
        Console.WriteLine("Issuer : " + clientCert.Issuer + "\n Seral No : " + clientCert.GetSerialNumberString());
        Console.WriteLine("Not Before : " + clientCert.GetEffectiveDateString() +" \n Not After : " + clientCert.GetExpirationDateString());
        Console.WriteLine("Thumb Print : " + clientCert.GetPublicKeyString());
        Console.WriteLine("######## EQuals SERVER CERT : " + clientCert.Equals(certificate));

        // Force to return true
        return true;
    }
}

以上检查方法是否正确?如果不是,为什么以及解决方案是什么。我还收到此警告“'System.Net.ServicePointManager.CertificatePolicy'已过时:'CertificatePolicy 对于此类型已过时,请改用 ServerCertificateValidationCallback。”。

有了这个我怎么知道 CheckValidationResult() 是否返回 false ?

非常感谢任何帮助。

谢谢

最佳答案

您是否尝试过按照过时消息中的建议使用 ServerCertificateValidationCallback?例如,您可以将如下所示的方法添加到现有的 MyPolicy 类中:

public bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
    Console.WriteLine(sslPolicyErrors);  // Or whatever you want to do...
    return true;
}

完成后,您可以替换现有的

System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();

符合以下内容:

MyPolicy policy = new MyPolicy();
System.Net.ServicePointManager.ServerCertificateValidationCallback = policy.ValidateServerCertificate;

关于c# - 使用 SSL 从 C# 应用程序调用 WebService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5648596/

相关文章:

c# - 测试 WCF 服务的最佳方法是什么?

c# - Web 服务集用户许可证 Office 365

web-services - 从网站到 Web 应用程序的 Web 服务消费

web-services - 如何在umbraco中调用网络服务

ssl - 通过 TLS 将 Kafka 生产者/消费者连接到代理

c# - 在 C# 中的乐透游戏

c# - 使用磁盘上的大型阵列

c# - 这个正则表达式可以优化吗?

ssl - 如何生成证书签名请求 (CSR) 以在 GKE 中设置 TLS

php - SSL Step Wise 初学者实现指南