2012-07-02 2 views
1

우리는 호스팅하는 서버의 웹 서비스에 연결하는 .Net 응용 프로그램을 보유하고 있으며 해당 서버의 https/443에 SSL 인증서가 바인딩되어 있습니다. 때로는 이러한 SSL 인증서가 자체 서명 되었기 때문에 ServicePointManager.ServerCertificateValidationCallback에 대해 프로그래밍 한 메서드 내에서 X509Certificate2.Verify() 메서드와 SslPolicyErrors.None 열거 형에 완전히 의존하지 않습니다. 왜냐하면 우리의 인증서가 항상 유효한.SSL 인증서 "발행자"가 서버 수정

해시 문자열 (X509Certificate.GetCertHashString())의 서명을 확인하고 "승인 된"인증서 목록과 비교하는 두 번째 단계가 있습니다. 이렇게하면 알려진 인증서 인 경우 콜백에 대해 true를 반환 할 수 있습니다.

설치 사이트 중 하나에서 정확히 동일한 웹 서버에 연결할 때 다른 해시 문자열이 표시됩니다. X509Certificate 객체의 모든 속성을 로그 파일에 인쇄 한 후 "Issued By"값이 연결될 때마다 다릅니다. 사용자의 워크 스테이션에서 네트워크 하드웨어로, 그리고 서버로 연결되는 과정에서 인증서를 수정합니다. 우리 응용 프로그램이 인증서의 유효성을 검사 할 때 먼저 신뢰할 수있는 기관이 아니며 해시 문자열을 검사 할 때 두 번째로 승인 된 목록에 있지 않습니다 (발급자를 변경하면 해시가 변경되는 것 같습니다).

누구든지 어떻게하는지에 대해 아이디어를 제공 할 수 있습니까? 또한, .Net에서 프로그래밍 방식으로 수행하는 방법에 대한 아이디어가 있습니까?

감사합니다, 댄

답변

0
의 서명을 끊을 인증서를 변경하면

하고 검증 뭔가 인증서를 변경하는 것을 보여줍니다, 당신은 인증서,하지가 "어떻게"를 끝낼를 어떤 변화 봐야한다.

변경 사항은 간단합니다. 인증서가 자체 서명되었으므로 누군가 자신의 키 쌍으로 다른 자체 서명 인증서를 만들고 다른 제목 또는 발급자를 인증서에 추가 할 수 있습니다. 별로 중요하지 않습니다. 목표는 분명히 man-in-the-middle 프록시를 설치하여 트래픽을 캡처하고 디코딩하는 것입니다.

2

해당 세션이 SSL 세션을 중간에 수행하는 bluecoat 또는 websense과 같은 엔터프라이즈 프록시에 의해 가로 챌 가능성이 있습니까?