2011-04-27 7 views
1

서버 측에서 다른 웹 서비스를 호출하는 코드가 있습니다. 많은 경우 SSL로 끝난다. 우리는 별들이 완전히 정렬되지 않을 때 이것이 실패하는 문제가 있습니다. 인증서를 신뢰할 수 있어야하고 내부 CA (인증 기관)를 수동으로 서버의 신뢰할 수있는 루트 인증서 저장소로 가져와야한다는 것을 알고 있습니다. 그러나 다른 경우도 있습니다. 오늘은 내가 내용의 경고를 얻을 URL을 칠 브라우저를 사용하는 경우 문제로 실행한다 : 보안 인증서의 이름이 잘못되었거나 사이트의 이름과 일치하지 않는 SSL 경고를 해결하기 위해 HTTP 요청을 코딩 할 수 있습니까?

이것은 브라우저에서 인정하고 계속 사이트에 알리라는 경고 일뿐입니다.

그러나 내 코드가 작동하지 않는 것으로 보입니다. 여기에 내 코드의 압축 된 버전입니다 :

HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; 
request.Credentials = new NetworkCredential(user, password); 
HttpWebResponse response = request.GetResponse() as HttpWebResponse; 

내가 나를 도울 것이다 명백한 아무것도 표시되지 않습니다 HttpWebRequest보고에서와 나는 현재 내 개발 환경에서 일을하려고의 사치가 필요하지 않습니다. 이 문제를 해결하기 위해 내가 할 수있는 간단한 변화가 있습니까? 이 비슷한 방법으로 막을 수있는 다른 유사한 문제가 있습니까?

답변

1

커크, ServerCertificateValidationCallback을 사용하여 간단히 true (테스트)를 반환 한 다음 특수 사례에 대한 오류 검사를 강화 했습니까? 또한

전문 솔루션을 CER 확인에 다른 정보를 원하시면 What is the best way of handling non-validating SSL certificates in C#을 확인할 수 있습니다 :

HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; 
request.Credentials = new NetworkCredential(user, password); 
ServicePointManager.ServerCertificateValidationCallback = delegate(object certsender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error) 
{ 
    return true; 
} 
HttpWebResponse response = request.GetResponse() as HttpWebResponse; 

대리자에서 검토 할 수있는 열거에 대해서도 SSLPolicyErrors 참조하십시오.

+0

감사합니다. 피트. 클라이언트에게 건네주고 이것이 작동하는지 확인하는 빠른 테스트 프로그램을 만들어야합니다. 그 일이 일어나려면 약간의 시간이 걸릴 수 있습니다.하지만 일단 답변을 주면 여기에 답변을 게시하겠습니다. –

+0

확인 됨. 문제가 해결되었습니다. 작동하는 코드로 응답을 편집했습니다. SSLPolicyError를 재정의 할 때 SSLPolicyError를 선택할 수있는 구성 가능한 옵션으로 만들 수 있습니다. –

관련 문제