■ Pop3Client 클래스의 Connect 메소드를 사용해 서버 인증서를 검증하는 방법을 보여준다.
▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
using System.Net.Security; using System.Security.Cryptography.X509Certificates; using OpenPop.Pop3; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 원격 인증서 검증 콜백 처리하기 - RemoteCertificateValidationCallback(sender, certificate, chain, sslpolicyerrors) /// <summary> /// 원격 인증서 검증 콜백 처리하기 /// </summary> /// <param name="sender">이벤트 발생자</param> /// <param name="certificate">X.509 인증서</param> /// <param name="chain">X.509 체인</param> /// <param name="sslpolicyerrors">SSL 정책 에러</param> /// <returns>처리 결과</returns> private static bool RemoteCertificateValidationCallback ( object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslpolicyerrors ) { // SSLPolicyErrors가 있는지 확인해야 하지만 여기서는 단순히 인증서가 정상이라고 말하고 신뢰한다. return true; } #endregion #region SSL 인증서 체크하기 - CheckSSLCertificate(hostName, port, timeout) /// <summary> /// SSL 인증서 체크하기 /// </summary> /// <param name="hostName">호스트명</param> /// <param name="port">포트</param> /// <param name="timeout">타임아웃</param> private static void CheckSSLCertificate(string hostName, int port, int timeout) { using(Pop3Client client = new Pop3Client()) { client.Connect(hostName, port, true, timeout, timeout, RemoteCertificateValidationCallback); } } #endregion #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { string hostName = "pop.naver.com"; int port = 995; CheckSSLCertificate(hostName, port, 3000); } #endregion } } |