2014-01-15 6 views
0

mmc를 통해 로컬 인증서를 설치 한 API에 액세스하려고 시도합니다. 서비스를 테스트 할 수 있도록 로컬 컴퓨터에서 수행했습니다. 나는 테스트를 위해 간단한 winforms 앱을 사용하고있다. 내가 dev에 목적을 위해 예외를 우회하기를 바라고있어 이것이 자기 서명 된 인증서 서버 쪽이라고 가정합니다.SSL HttpWebRequest 문제

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(postData); 
      req.Method = "POST"; 
      req.ContentType = "application/x-www-form-uriencoded"; 
      req.KeepAlive = true; 
      req.AllowAutoRedirect = false; 

      X509Store store = new X509Store(StoreName.Root,StoreLocation.LocalMachine); 
      store.Open(OpenFlags.ReadOnly); 
      X509Certificate cert = new X509Certificate(); 
      for (int i = 0; i < store.Certificates.Count; i++) 
      { 
       if (store.Certificates[i].SerialNumber == "XXXX") 
       { 
        cert = store.Certificates[i]; 
       } 
      } 
      req.ClientCertificates.Add(cert); 
      req.PreAuthenticate = true; 

      try 
      { 
       using (WebResponse resp = req.GetResponse()) 
       { 
        Stream responseStream = resp.GetResponseStream(); 
        using (StreamReader responseStreamReader = new 
        StreamReader(responseStream, new ASCIIEncoding())) 
        { 
         respString = responseStreamReader.ReadToEnd(); 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       // there is a problem 
      } 

나는 시도 캐치에 다음과 같은 예외를 받고 있어요 : 기본 연결이 닫혔습니다 다음 SSL/TLS 보안 채널에 대한 트러스트 관계를 설정할 수 없습니다.

  • 는 내가 진행하고 데이터를 얻을 수 있습니다 그럼 내가 경고주의를 얻을 브라우저의 API를 URL로 이동하지만 때 변수 "인증서"
  • 의 인증서 개체가 않습니다.
  • 예외를 억제하는 등의 stackoverflow에서 권장되는 다른 수정 프로그램을 시도했습니다.

    ServicePointManager.ServerCertificateValidationCallback = 새로운
    RemoteCertificateValidationCallback ( 대리인 {true를 반환} )를;

나는 이와 비슷한 질문을 꽤 많이하고 있으며, 나는 그들 모두를 읽었습니다. 감사하는 제안을 해주셔서 감사드립니다.

답변

0

다음은 마침내 나를 위해 그것을 고쳤다. 브라우저의 API 서버 주소로 가서 인증서를 내 데스크톱의 파일로 내 보냈습니다. 나는 다음 MMC를 열고 설치 한 인증서를 다음 링크에서 같은 :

http://support.esri.com/en/knowledgebase/techarticles/detail/38408

나는이 웹 서비스를 호출 아무런 문제가 없었다 설치 후 및 예외가 멀리 갔다.