2016-12-13 46 views
5

Mam problem z potwierdzeniem certyfikatu SSL w mojej grze Unity.Sprawdzanie poprawności certyfikatu SSL .NET vs Mono

Zrobiłem prosty kod testowy, który jest:

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/"); 
} 

I wprowadziły to w .NET 4.5 i Unity (mono) i problem jest to, że certyfikat jest sprawdzany poprawnie na .NET, ale w Mono otrzymuję:

SslPolicyErrors: RemoteCertificateChainErrors 
ChainStatus: 
    PartialChain 
    RevocationStatusUnknown 
    OfflineRevocation 

Dlaczego tak się dzieje? Czy powinienem dodatkowo ustawić coś w Mono, żeby to obsłużyć?

Dzięki

Odpowiedz

0

Problemem jest mono nie niesie żadnego urzędu certyfikacji lub CRL, zobacz Why doesn’t Mono includes root certificates. A jeśli próbujesz stworzyć grę mobilną, był cert load bug, który zwrócił niekompletny X509Chain i został naprawiony w Mono 3.6.0.

Zgodnie z oficjalnymi wskazówkami, aktualizacja jedności do Unity2017 będzie miała wbudowany mono 4.5, który rozwiązał ten zirytowany problem. W przeciwnym razie możesz mieć do install CA certs manually.