SSL证书验证.NET vs Mono

Tom*_*asz 6 .net c# mono ssl

我在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/");
}
Run Code Online (Sandbox Code Playgroud)

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

SslPolicyErrors: RemoteCertificateChainErrors
ChainStatus:
    PartialChain
    RevocationStatusUnknown
    OfflineRevocation
Run Code Online (Sandbox Code Playgroud)

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

谢谢

sak*_*kiM 1

问题是 mono 不携带任何根 CA 或 CRL,请参阅为什么 Mono 不包含根证书。如果您尝试开发手机游戏,则会出现一个证书加载错误,该错误会返回不完整的 X509Chain,并在 Mono 3.6.0 中修复。

\n\n

根据官方建议,更新unity到Unity2017将内置mono 4.5,解决了这个恼人的问题。否则您可能必须手动安装 CA 证书

\n