【问题标题】:SSL certificate validation .NET vs MonoSSL 证书验证 .NET 与 Mono
【发布时间】:2017-04-28 06:56:32
【问题描述】:

我在 Unity 游戏中验证 SSL 证书时遇到问题。

我做了简单的测试代码是:

ServicePointManager.ServerCertificateValidationCallback += ServerCertificateValidationCallback;


private static bool ServerCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
    return true;
}


public void Test()
{
    WebClient w = new WebClient();
    string downloadString = w.DownloadString("https://encrypted.google.com/");
}

我已经在 .NET 4.5 和 Unity (Mono) 中实现了这个,问题是这个证书在 .NET 上得到了正确验证,但是在 Mono 中我得到了:

SslPolicyErrors: RemoteCertificateChainErrors
ChainStatus:
    PartialChain
    RevocationStatusUnknown
    OfflineRevocation

为什么会这样?我应该在 Mono 中另外设置一些东西来处理吗?

谢谢

【问题讨论】:

    标签: c# .net ssl mono


    【解决方案1】:

    问题是单声道不携带任何根 CA 或 CRL,请参阅 Why doesn’t Mono includes root certificates。如果你尝试开发手机游戏,有一个cert load bug,它返回不完整的X509Chain,并在Mono 3.6.0中修复。

    根据官方建议,将Unity更新到Unity2017将内置mono 4.5,解决了这个恼人的问题。否则你可能需要install CA certs manually

    【讨论】:

    • 我正在使用 Unity 2018.1 仍然有这个问题,但你至少为我指明了正确的方向 +1。
    猜你喜欢
    • 2017-06-13
    • 2019-03-29
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2011-04-10
    • 1970-01-01
    相关资源
    最近更新 更多