결국 IoT 용으로 예정된 UWP 앱을 C#으로 작성하고 있지만 지금은 로컬에서만 디버깅했습니다. Windows.Web.Http.HttpClient
을 사용하여 작성한 자체 호스팅 WCF REST 웹 서비스에 연결하고 테스트를 위해 같은 시스템에서 콘솔 앱으로 실행하고 있습니다. 서비스에는 인증서와의 상호 인증이 필요하므로 CA 인증서, 서비스 인증서 및 클라이언트 인증서가 있습니다.UWP 앱 HttpClient HTTPS 클라이언트 인증서 문제
내 UWP 코드는 다음과 같이 작동합니다 : 클라이언트 인증서 및 CA 인증서에 대한
- 확인 응용 프로그램 인증서 저장소가 설치되어 있어야합니다.
- 그렇지 않은 경우 PFX 파일과 CER 파일에서 각각 설치하십시오.
- 은
HttpBaseProtocolFilter
에Certificate
를 부착하고 나는 다음과 같은 오류가PostAsync
전화 후HttpClient
- 를 호출
HttpClient.PostAsync
에 필터를 추가 An Error Occurred in the Secure Channel Support
합니다. 온라인 검색을 많이하고 상식에 따라 상호 인증 된 SSL 연결을 설정하는 데 문제가있어서 HttpClient
이 barfing이라고 확신합니다. 하지만 내 문제 해결을 기반으로 나는 이유를 알 수 없습니다.
더 이상, 나는 클라이언트 인증서가 요청에 첨부 된 평범한 이전 콘솔 응용 프로그램을 작성했습니다. 모든 것이 잘 작동합니다. 안타깝게도 System.Net
은 UWP에서 완전히 지원되지 않습니다. 또한 UWP HttpClient
에 인증서를 첨부하지 않으려 고 시도했으며 설치 된 인증서를 선택하는 UI가있는 앱이 나에게 메시지를 표시합니다. 올바른 인증서를 선택하고 여전히 동일한 예외가 발생합니다 (이 경우 최소한 인증서가 올바르게 설치되어 있고 앱의 관점에서 CA와 올바르게 인증됨을 알 수 있습니다). 추가로 브라우저에서 웹 서비스를 GET하고 메시지가 나타나면 클라이언트 인증서를 선택하고 파일을 다운로드 할 수 있습니다.
나는 Fiddler를 사용해 보았는데, 트래픽을 프록시하는 방식 때문에 내 웹 서비스가 금지 된 요청을 거부하는 것을 제외하고는 조금 더 효과가있는 것으로 여긴다. 아마도 Fiddler가 올바른 클라이언트를 포함하고 있지 않기 때문일 것이다. 인증서에있는 인증서). Windows에서 localhost를 사용하여 Wireshark를 작동 시키면 고통 스럽기 때문에 아직 Wireshark를 사용하지 않았습니다.
내 다음 단계는 클라이언트 인증을 요구하지 않도록 웹 서비스를 변경하고 이것이 문제인지 확인하는 것입니다.
두 가지 질문 :이 경우에는 Windows.Web.Http.HttClient
이 작동하지 않는 이유는 무엇입니까? 덜 중요한, 좋은 HTTP 모니터링 도구에 대한 권장 사항을 통해이 문제를 더욱 자세히 디버깅 할 수 있습니까?
이 자체 서명 인증서 표시입니다 시도? –
나는'makecert'를 사용하여 CA 인증서를 만들고 그 인증서로부터'makecert'를 사용하여 클라이언트와 서비스 인증서를 발급했습니다. – koopaking3
아마도 관련이 있습니다 : https://code.msdn.microsoft.com/windowsapps/How-to-ignore-Self-Signed-e50b89b6 –