[c#] TLS 1.2를 사용하도록 .NET 웹 서비스 업데이트

TLS 1.2를 사용하여 내 .NET 웹 서비스에서 TLS 1.2를 강제 할 다른 웹 서비스로 연결해야합니다. .NET 4.6은 기본적으로 TLS 1.2를 사용하므로 가장 쉬운 솔루션처럼 들리는 리소스를 찾았습니다. 서버에서 .NET 프레임 워크를 업데이트하고 다시 시작했습니다. IIS에서 .NET 4.6을 사용하여 응용 프로그램 풀을 만들려고했지만 4.0이 유일한 옵션이었습니다. 그런 다음 4.6이 .NET 4.0에 대한 “현재 위치”업데이트이기 때문에 여전히 4.0이라고 표시되는 것을 발견했습니다. 그래서 나는 아마 끝났다고 생각했습니다. 그러나 관련없는 이유로 얻은 오류 페이지에 Microsoft .NET Framework Version:4.0.30319성공적으로 업그레이드하지 않은 것 같습니다. 내 응용 프로그램 풀이 .NET 4.6을 사용하고 있는지 확인하는 방법에 대한 포인터 또는 더 일반적으로 TLS 1.2를 사용하는 방법에 대한 포인터가 있습니까?



답변

실제로 TLS 1.2를 허용하기 위해 .NET 웹 서비스를 4.6으로 업그레이드했습니다.

Artem이 말하는 것은 우리가 한 첫 번째 단계였습니다. 웹 서비스의 프레임 워크를 4.6으로 다시 컴파일하고 TLS 1.2를 활성화하도록 레지스트리 키를 변경했지만 작동하지 않았습니다. 연결은 여전히 ​​TLS 1.0에있었습니다. 또한 시스템에서 SLL 3.0, TLS 1.0 또는 TLS 1.1을 허용하지 않기를 원했습니다. 다른 웹 서비스에서이를 사용할 수 있습니다. 레지스트리에서 변경 사항을 롤백했습니다.

우리는 실제로 Web.Config 파일을 변경하여 IIS에 “야, 4.6에서 실행 해주세요”라고 알려주었습니다.

다음은 web.config + .NET 4.6의 재 컴파일에 추가 된 변경 사항입니다.

<system.web>
    <compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 -->

    <!--Added this httpRuntime -->
    <httpRuntime targetFramework="4.6" />

    <authentication mode="Windows"/>
    <pages controlRenderingCompatibilityVersion="4.0"/>
</system.web>

IIS는 이제 4.6 (명시 적으로 말함)에서 웹 서비스를 실행하고 4.6은 기본적으로 TLS 1.2를 사용하기 때문에 연결이 TLS 1.2로 변경되었습니다.


답변

웹 서비스 클라이언트를 인스턴스화하기 전에 다음 코드를 추가하십시오.

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

또는 TLS 1.1 및 이전 버전과의 역 호환성을 위해 :

System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;


답변

4.5 이전의 .Net을 사용하는 경우 열거 형에 Tls12가 없으므로 여기에 상태가 명시 적으로 언급 됩니다.

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;


답변

필요한 세 단계 :

  1. 레지스트리에 Enabled=0DisabledByDefault=1(전체 경로는 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols) 를 추가하여 SSL2.0, TLS1.0, TLS1.1을 서버 시스템에서 금지됨으로 명시 적으로 표시합니다 . 자세한 내용은 화면 참조
    기재

  2. TLS1.21의 단계에 따라 명시 적으로 활성화 합니다 . Enabled=1DisabledByDefault=0각각을 사용 합니다.

참고 : 서버 버전 확인 : 프로토콜을 Windows Server 2003지원하지 않습니다.TLS 1.2

  1. TLS1.2위에서 제안한 @John Wu와 같이 앱 수준에서만 활성화 합니다.

    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

이 가이드가 도움이되기를 바랍니다.


@Subbu가 언급했듯이 업데이트 : 공식 가이드


답변

나를 위해 일했습니다.

1 단계 : 응용 프로그램 서버의 https://www.microsoft.com/en-us/download/details.aspx?id=48137 에서 웹 설치 관리자 exe를 다운로드하여 설치했습니다 . 설치가 완료된 후 애플리케이션 서버를 재부팅했습니다.

2 단계 : web.config에 아래 변경 사항 추가

<system.web>
    <compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 -->
    <!--Added this httpRuntime -->
    <httpRuntime targetFramework="4.6" />
</system.web>

3 단계 : 1 단계와 2 단계를 완료 한 후 ” WebForms UnobtrusiveValidationMode에는 ‘jquery’에 대한 ScriptResourceMapping이 필요합니다. jquery (대소 문자 구분)라는 ScriptResourceMapping을 추가하십시오.”라는 오류가 발생했습니다.이 오류를 해결하려면 아래 키를 appsettings에 추가했습니다. 내 web.config 파일에서

<appSettings>
      <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>


답변

PowerBI Embedded에는 TLS 1.2가 필요합니다.

위의 Etienne Faucher 의 답변 이 솔루션입니다. 위 답변에 대한 빠른 링크 … 위 답변에 대한 빠른 링크 …
( https://stackoverflow.com/a/45442874 )

PowerBI에 TLS 1.2가 필요함 2020 년 6 월- 이것이 답입니다 -프레임 워크에서 찾고있는 기본 TLS 1.2 동작을 강제하기 위해 IIS 런타임을 최대 4.6까지 강제하는 것을 고려하십시오. 위의 답변은 구성 변경 전용 솔루션을 제공합니다.

증상 : 강제 종료 거부 됨 Microsoft PowerBI Embedded에 대한 TCP / IP 연결이 시스템 전체에 갑자기 나타납니다.

이러한 PowerBI 호출은 방화벽이 연결을 차단하는 것처럼 Hard TCP / IP Close 오류와 함께 작동을 중지합니다. 일반적으로 인증 단계가 작동합니다. 특정 작업 영역에 대한 서비스를 방문하고 실패한 경우 ID를보고합니다.

TLS 1.2 필수에 대한 Microsoft PowerBI의 2020 년 메모입니다.

PowerBIClient

이 문제를 보여주는 방법

GetReportsInGroupAsync GetReportsInGroupAsAdminAsync GetReportsAsync GetReportsAsAdminAsync Microsoft.PowerBI.Api HttpClientHandler 강제 TLS 1.1 TLS 1.2

사람들이 이것을 찾는 데 도움이되는 오류 용어 검색 : System.Net.Http.HttpRequestException : 요청을 보내는 동안 오류가 발생했습니다. System.Net.WebException : 기본 연결이 닫혔습니다. 보내기에서 예기치 않은 오류가 발생했습니다. System.IO.IOException : 전송 연결에서 데이터를 읽을 수 없습니다. 기존 연결이 원격 호스트에 의해 강제로 닫혔습니다.


답변