我在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中设置一些东西来处理吗?
谢谢
问题是 mono 不携带任何根 CA 或 CRL,请参阅为什么 Mono 不包含根证书。如果您尝试开发手机游戏,则会出现一个证书加载错误,该错误会返回不完整的 X509Chain,并在 Mono 3.6.0 中修复。
\n\n根据官方建议,更新unity到Unity2017将内置mono 4.5,解决了这个恼人的问题。否则您可能必须手动安装 CA 证书。
\n