HTTPS, TCP를 통한 SSL 및 SOAP 보안의 인증서 유효성 검사 차이점

.NET Framework 4.5
이 항목은 아직 평가되지 않았습니다.이 항목 평가

HTTPS(HTTP를 통한 TLS(전송 계층 보안)) 또는 TCP를 통한 TLS와 함께 메시지 계층(SOAP) 보안이 있는 WCF(Windows Communication Foundation)의 인증서를 사용할 수 있습니다. 이 항목에서는 이러한 인증서의 유효성을 검사하는 방법의 차이점에 대해 설명합니다.

HTTPS를 사용하여 클라이언트와 서비스 간에 통신하는 경우 클라이언트에서 서비스를 인증하는 데 사용하는 인증서는 신뢰 체인을 지원해야 합니다. 즉, 신뢰할 수 있는 루트 인증 기관에 연결되어야 합니다. 연결되지 않은 경우 HTTP 계층에서 "원격 서버에서 (403) 사용할 수 없음 오류를 반환했습니다."라는 메시지와 함께 WebException이 발생합니다. WCF는 이 예외를 MessageSecurityException으로 표시합니다.

HTTPS를 사용하여 클라이언트와 서비스 간에 통신하는 경우 서버에서 인증하는 데 사용하는 인증서는 신뢰 체인을 기본적으로 지원해야 합니다. 즉, 신뢰할 수 있는 루트 인증 기관에 연결되어야 합니다. 인증서가 해지되었는지 여부를 확인하기 위해 온라인 확인을 수행하지는 않습니다. 다음 코드에서처럼 RemoteCertificateValidationCallback 콜백을 등록하여 이 동작을 재정의할 수 있습니다.

ServicePointManager.ServerCertificateValidationCallback +=
    new RemoteCertificateValidationCallback(ValidateServerCertificate);


여기서 ValidateServerCertificate의 서명은 다음과 같습니다.

public static bool ValidateServerCertificate(
  object sender,
  X509Certificate certificate,
  X509Chain chain,
  SslPolicyErrors sslPolicyErrors)


ValidateServerCertificate를 구현하면 클라이언트 응용 프로그램 개발자가 서비스 인증서의 유효성을 검사하는 데 필요하다고 판단하는 확인 사항을 수행할 수 있습니다.

TCP를 통한 SSL(Secure Sockets Layer) 또는 SOAP 메시지 보안을 사용하는 경우 X509ClientCertificateAuthentication 클래스의 CertificateValidationMode 속성 값에 따라 클라이언트 인증서의 유효성을 검사합니다. 속성은 X509CertificateValidationMode 값 중 하나로 설정됩니다. X509ClientCertificateAuthentication 클래스의 RevocationMode 속성 값에 따라 해지 확인을 수행합니다. 속성은 X509RevocationMode 값 중 하나로 설정됩니다.

myServiceHost.Credentials.ClientCertificate.Authentication.
    CertificateValidationMode=
    X509CertificateValidationMode.PeerOrChainTrust;       

myServiceHost.Credentials.ClientCertificate.Authentication.
    RevocationMode=X509RevocationMode.Offline; 


TCP를 통한 SSL 또는 SOAP 메시지 보안을 사용하는 경우 X509ServiceCertificateAuthentication 클래스의 CertificateValidationMode 속성 값에 따라 서비스 인증서의 유효성을 검사합니다. 속성은 X509CertificateValidationMode 값 중 하나로 설정됩니다.

X509ServiceCertificateAuthentication 클래스의 RevocationMode 속성 값에 따라 해지 확인을 수행합니다. 속성은 X509RevocationMode 값 중 하나로 설정됩니다.

myClient.ClientCredentials.ServiceCertificate.
    Authentication.CertificateValidationMode=
    X509CertificateValidationMode.PeerOrChainTrust;
myClient.ClientCredentials.ServiceCertificate.Authentication.
    RevocationMode = X509RevocationMode.Offline;


출처 - http://msdn.microsoft.com/ko-kr/library/aa702579.aspx




'Web > Common' 카테고리의 다른 글

네이버지도에서 ‘내 위치’  (0) 2013.04.29
web - content negotiation  (0) 2013.01.10
screen(display) resolution  (0) 2012.11.20
Bootstrap 소개  (0) 2012.11.04
http - X-Forwarded-For 헤더 필드  (0) 2012.08.21
Posted by linuxism
,