다음을 통해 공유


완화: TLS 프로토콜

.NET Framework 4.6부터 클래스 및 System.Net.ServicePointManager 클래스는 Tls1.0, System.Net.Security.SslStream Tls1.1 또는 Tls 1.2의 세 가지 프로토콜 중 하나를 사용할 수 있습니다. SSL3.0 프로토콜 및 RC4 암호화는 지원되지 않습니다.

영향

이 변경 내용은 다음 사항에 영향을 줍니다.

  • SSL을 사용하여 다음 형식을 사용하여 HTTPS 서버 또는 소켓 서버와 통신하는 모든 앱: HttpClient, HttpWebRequest, FtpWebRequestSmtpClientSslStream.

  • Tls1.0, Tls1.1 또는 Tls 1.2를 지원하도록 업그레이드할 수 없는 모든 서버 쪽 앱입니다.

완화 방법

권장되는 완화 방법은 세버 쪽 앱을 Tls1.0, Tls1.1 또는 Tls 1.2로 업그레이드하는 것입니다. 이 작업이 불가능하거나 클라이언트 앱이 손상된 경우 AppContext 클래스를 사용하여 다음 두 방법 중 하나로 이 기능을 옵트아웃(opt out)할 수 있습니다.

  • 프로그래밍 방식으로 다음과 같은 코드 조각을 사용합니다.

    const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching";
    const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto";
    AppContext.SetSwitch(DisableCachingName, true);
    AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true);
    
    Const DisableCachingName As String = "TestSwitch.LocalAppContext.DisableCaching"
    Const DontEnableSchUseStrongCryptoName As String = "Switch.System.Net.DontEnableSchUseStrongCrypto"
    AppContext.SetSwitch(DisableCachingName, True)
    AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, True)
    

    개체가 ServicePointManager 한 번만 초기화되므로 이러한 호환성 설정을 정의하는 것이 애플리케이션에서 가장 먼저 수행해야 합니다.

  • app.config 파일의 런타임< 섹션에> 다음 줄을 추가합니다.

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

그러나 애플리케이션의 보안이 떨어지므로 기본 동작을 옵트아웃하는 것은 권장되지 않습니다.

참고하십시오