1

.Net 4.6.1로 업그레이드 한 이후 더 이상 제 3 자 웹 서비스를 호출 할 수 없지만 '연결할 수 없습니다. 권위있는 SSL/TLS 보안 채널 ... '. 몇 가지 방법으로이 문제를 해결할 수 있지만 이러한 방법을 수용할만한 것은 아닙니다. A) 코드에 다음 줄을 추가 : 다음 줄을 추가 이것은 내가 Tls1.2를 사용하지 않는 보장WCF - .Net으로 업그레이드 한 후 SSL/TLS에 대한 보안 채널을 설정할 수 없습니다. 4.6.1

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls11 | System.Net.SecurityProtocolType.Tls; 

를 모든 닷넷 4.5.2

B)로 이전 작업 내 설정 파일

<AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/> 

이 내가 Tls1.2를 사용하지 않는 보장하고 모든 닷넷 4.5.2와 이전 작동

차라리 모든 CA에 대한 기능을 해제보다 Tls1.2를 사용할 수있을 것 내 응용 프로그램에서, 내 응용 프로그램은 많은 제 3 자 서비스와 통신하므로 문제가 있기 때문에 모든 통신을 제한하고 싶지 않습니다.

WireShark를 사용하여 문제를 진단하면 클라이언트 인증서가 전송되지 않아이 오류가 발생하는 것으로 나타났습니다.

<system.serviceModel> 
<bindings> 
    <basicHttpBinding> 
     <binding name="def"> 
      <security mode="Transport"> 
       <transport clientCredentialType="Certificate"/> 
      </security> 
     </binding> 
    </basicHttpBinding> 
</bindings> 
<client> 

    <endpoint address="https://abc" binding="basicHttpBinding" bindingConfiguration="def" contract="ghi" name="jkl"/> 
</client> 

WireShark이 ClientCertificate는 I에 유래에 많은 기사를 읽고

코드에 설정되어, 가장 유사한/유용은 아래와 같이 표시됩니다 How to force WCF client to send client certificate?

I을 확인 됨 :

클라이언트 인증서 (개인 키) 10
  1. 접속이 가능
  2. 서버 인증서는 신뢰와
  3. 내 사용자 지정 바인딩 변환

  4. 클라이언트 인증서는 서버가
  5. 를 보낸 사양 중 하나와 일치 유효한 requireClientCertificate을 지정하는 바인딩 - 아니 효과

    <endpoint address="https://abc" binding="customBinding" bindingConfiguration="def" contract="ghi" name="jkl"/> 
    

사람이 다른 것을 내가 확인하거나 내 인증서가 전송되지 않습니다 왜 나를 이해하는 데 도움이 날 지점 수 있습니까?

나는 인터넷 익스플로러 나 가장자리 중 하나 크롬에서가 아니라 인증을 내 클라이언트 인증서를 사용하여 성공적으로 WSDL을 다운로드 할 수 있습니다 6월 업데이트 2 일!

Chrome은 TLS에 대해 SChannel (Edge와 IE처럼)을 사용하지 않지만 자체 SSL/TLS 구현이라고 믿습니다.

나는 현재 문제가 서버가 클라이언트 서명 알고리즘과 일치하지 않는 클라이언트 인증서에 대한 서명 알고리즘을 지정하고 있다고 100 % 확신하지는 않지만. 필자는 TLS 1.2가 어떻게 작동하는지 충분히 알지 못하지만, spec tools.ietf.org/html/rfc5246#section-7.4.4를 읽으면 가능할 것으로 보인다.

Wireshark를 추적에서

참조 인증서 요청 - i.stack.imgur.com/BwmUM.png 및 인증서 세부 사항 - i.stack.imgur.com/pbKEF.png 거기

모든 tls1.2 전문가?

+0

한 가지 남은 것. [here] (https://msdn.microsoft.com/en-us/library/ms731323(v=vs.110) .aspx)와 같은 구성의 끝점 동작에서 클라이언트 인증서를 지정합니다. – pepo

+0

제안 해 주셔서 감사합니다. 나는 이것을 시도했지만, 불행히도 어떤 차이도 없다. Tls1.2를 사용하지 않으면 여전히 작동하므로 구성 변경 사항이 정확하다는 것을 알고 있습니다. –

+0

개인 키에 대한 권한을 올바르게 설정 하시겠습니까? 보십시오 [this] (http://stackoverflow.com/a/32605764/3245057). 또는 코드에서 개인 키를 사용하려고 시도합니다. SignedCms. 또한 인증서의 유효성 검사와 관련된 문제를 기록하는 CAPI 이벤트 로그 (응용 프로그램 및 서비스 로그/microsoft/capi)가 있지만 기본적으로 사용하지 않도록 설정하여 사용하도록 설정합니다. – pepo

답변

0

업데이트 : 우리가 작업하고있는 회사는 브라우저가 TLS1.2를 지원할 때 Internet Explorer와 Edge가 웹 사이트를 인증 할 수 없으므로 TLS1.2를 해제하기로 결정했습니다. 이 서비스를 잘못된 구성에 적용 할 것입니다.