-
HttpWebRequest 루트 인증서와 해당 도메인 인증서 확인하기.프로그래밍/C# + Unity 2020. 5. 18. 19:20728x90
RemoteCertificateValidationCallback은 HTTPS 인증서를 확인할 수 있게 해준다.
단, 'UNITYTLS_X509VERIFY_FLAG_NOT_TRUSTED'라는 메시지가 나오면서 Unity상에서는 위와 같은 방법을 사용할 수 없다. 왜냐하면 현재와 같이 루트 인증서와 비교하여 검증하기 위해 OpenSSL/MbedTLS를 사용하는 대신 시스템별 TLS API를 통해 검증을 수행함으로써 이 문제를 해결할 수 있을지 모르지만, 이 해결방법은 서로 다른 운영체제에서 작동되지 않을 가능성이 크기 때문에 Unity상에서 구현을 하지 않았다고 한다.
static void Main(string[] args) { try { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate); HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://원하는_도메인_주소"); request.Method = "GET"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream stream = response.GetResponseStream(); StreamReader reader = new StreamReader(stream, Encoding.UTF8); string text = reader.ReadToEnd(); stream.Close(); response.Close(); reader.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { try { if (sslPolicyErrors != SslPolicyErrors.None) {//SSL이 오류인 경우 Console.WriteLine(sslPolicyErrors); return false; } Console.WriteLine("Subject : " + certificate.Subject); Console.WriteLine("Issuer : " + certificate.Issuer); Console.WriteLine("Hash : " + certificate.GetCertHashString()); X509ChainElementCollection x509ChainElement = chain.ChainElements; X509Certificate rootCA = x509ChainElement[x509ChainElement.Count - 1].Certificate; Console.WriteLine("Root CA Subject : " + rootCA.Subject); Console.WriteLine("Root CA Issuer : " + rootCA.Issuer); Console.WriteLine("Root CA Hash : " + rootCA.GetCertHashString()); return true; } catch (Exception) { return false; } }
위의 그림에서는 본 블로그의 주소인 https://syudal.tistory.com을 입력하여 테스트하였다.
728x90'프로그래밍 > C# + Unity' 카테고리의 다른 글
[C#, webhacking.kr] Challenge 4번 풀기 (0) 2023.05.18 [C#] FloodFill 알고리즘과 땅따먹기 (0) 2023.04.01 [OpenCVSharp] bgr과 inrange함수 (0) 2020.02.16 [C#] 기본 연결이 닫혔습니다. 보내기에서 예기치 않은 오류가 발생했습니다. (0) 2019.11.18 [Unity] Easy Save Plugin to PlayerPrefs (0) 2019.11.04 댓글