웹 요청 중에 협상된 TLS 버전을 확인하면 디버깅 및 로깅 목적에 대한 귀중한 통찰력을 얻을 수 있습니다.
.NET 4.7은 기본적으로 HTTP 요청에 TLS 1.2를 사용합니다. 그러나 연결 중에 실제로 설정된 특정 TLS 버전을 확인해야 하는 경우가 많습니다.
이 기사에서는 HttpWebRequest.GetRequestStream()
또는 HttpWebRequest.GetResponseStream()
에서 반환된 스트림에서 이 정보를 추출하는 다양한 기술을 살펴봅니다.
리플렉션을 사용하면 TlsStream
->SslState
->SslProtocol
속성 값에 액세스할 수 있습니다. 이 방법은 압축된 스트림과 압축되지 않은 스트림 모두에 적용됩니다. 또한 request.GetRequestStream()
을 사용하여 요청을 초기화할 때 유효성 검사가 수행됩니다.
WebRequest를 초기화하기 전에 프로토콜 정보를 얻는 것이 중요한 경우 TcpClient()
사용을 고려하세요. WebRequest와 동일한 설정(지원되는 프로토콜 및 인증서 확인)을 사용하여 연결을 설정하면 대상 서버와 협상할 TLS 프로토콜을 결정할 수 있습니다.
secur32.dll
-> QueryContextAttributesW()
메서드를 사용하여 초기화된 스트림의 연결 보안 컨텍스트를 쿼리할 수 있습니다. 그러나 필요한 컨텍스트 핸들은 공개되지 않으며 리플렉션이나 AuthenticatedStream
클래스를 통해서만 액세스할 수 있습니다. 불행하게도 이러한 클래스는 WebRequest/WebResponse에서 반환된 스트림과 호환되지 않습니다.
요청이 압축이 풀린 스트림(예: GZIP 또는 Deflate)을 반환하는 경우 위 방법을 진행하기 전에 기본 TlsStream
을 추출해야 합니다.
위 내용은 .NET 4.7 HTTP 요청에서 협상된 TLS 버전을 어떻게 확인할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!