TLS (Transport Layer Security) 1.2Transport Layer Security (TLS) 1.2

최신 버전의 TLS ( Transport Layer Security ) 를 사용 하는 것은 응용 프로그램 네트워크 통신의 보안을 유지 하는 데 중요 합니다.Using the latest version of Transport Layer Security (TLS) is important to ensure application network communications are secure.

경고

4 월, 2018 – PCI 규정 준수를 포함 하 여 보안 요구 사항이 증가 함에 따라 주요 클라우드 공급자 및 웹 서버는 1.2 보다 오래 된 TLS 버전 지원을 중지 해야 합니다.April, 2018 – Due to increased security requirements, including PCI compliance, major cloud providers and web servers are expected to stop supporting TLS versions older than 1.2. 이전 버전의 Visual Studio에서 만든 Xamarin 프로젝트는 이전 버전의 TLS를 사용 합니다.Xamarin projects created in previous versions of Visual Studio default to use older versions of TLS.

앱이 이러한 서버 및 서비스와 계속 작동 하는지 확인 하려면 Xamarin 프로젝트를 업데이트 하 여 아래 설정을 사용 하 고 앱을 다시 빌드하고 다시 배포 하 여 사용자에 게 배포 해야 합니다.In order to ensure your apps continue to work with these servers and services, you should update your Xamarin projects to use the settings below, then re-build and re-deploy your apps to your users.

프로젝트는 System .net. Http 어셈블리를 참조 하 고 아래와 같이 구성 해야 합니다.Projects must reference the System.Net.Http assembly and be configured as shown below.

Xamarin Android를 TLS 1.2로 업데이트 합니다.Update Xamarin.Android to TLS 1.2

Httpclient 구현SSL/tls 구현 옵션을 업데이트 하 여 TLS 1.2 보안을 사용 하도록 설정 합니다.Update the HttpClient implementation and SSL/TLS implementation options to enable TLS 1.2 security.

참고

Android 5.0 이상이 필요 합니다.Requires Android 5.0 or newer.

이러한 설정은 프로젝트 속성에서 Android 옵션 > 다음 고급 단추를 클릭 하 여 찾을 수 있습니다.These settings can be found in Project Properties > Android Options and then clicking on the Advanced button:

Visual Studio에서 HttpClient 및 TLS 구성Configure HttpClient and TLS in Visual Studio

Xamarin.ios를 TLS 1.2로 업데이트 합니다.Update Xamarin.iOS to TLS 1.2

Httpclient 구현 옵션을 업데이트 하 여 TSL 1.2 보안을 사용 하도록 설정 합니다.Update the HttpClient Implementation option to enable TSL 1.2 security.

이 설정은 프로젝트 속성 > IOS 빌드에서 찾을 수 있습니다.This setting can be found in Project Properties > iOS Build:

Visual Studio에서 HttpClient 및 TLS 구성Configure HttpClient and TLS in Visual Studio

Xamarin.ios를 TLS 1.2로 업데이트 합니다.Update Xamarin.Mac to TLS 1.2

Mac용 Visual Studio에서 Xamarin.ios 앱에 TLS 1.2을 사용 하도록 설정 하려면 Project 옵션에서 Httpclient 구현 옵션을 업데이트 > Mac 빌드 > 합니다.In Visual Studio for Mac, to enable TLS 1.2 in a Xamarin.Mac app, update the HttpClient Implementation option in Project Options > Build > Mac Build:

Mac용 Visual Studio에서 HttpClient 구성Configure HttpClient in Visual Studio for Mac

경고

예정된 Xamarin.Mac 4.8 릴리스는 macOS 10.9 이상만 지원합니다.The upcoming Xamarin.Mac 4.8 release will only support macOS 10.9 or higher. 이전 버전의 Xamarin.Mac은 macOS 10.7 이상을 지원했지만 이러한 이전 macOS 버전에는 TLS 1.2를 지원할 수 있는 TLS 인프라가 충분하지 않습니다.Previous versions of Xamarin.Mac supported macOS 10.7 or higher, but these older macOS versions lack sufficient TLS infrastructure to support TLS 1.2. macOS 10.7 또는 macOS 10.8을 대상으로 하려면 Xamarin.Mac 4.6 또는 이전 버전을 사용하세요.To target macOS 10.7 or macOS 10.8, use Xamarin.Mac 4.6 or earlier.

대체 구성 옵션Alternative configuration options

이 섹션에서는 위에 표시 된 TLS 1.2 지원 구성의 대안을 설명 합니다.This section discusses alternatives to the TLS 1.2-supported configurations shown above. 응용 프로그램 개발자는 다양 한 수준의 TLS 지원을 사용할 경우의 위험을 이해 하는 경우에만 이러한 대안을 고려해 야 합니다.Application developers should only consider these alternatives if they understand the risks of using different levels of TLS support.

HttpClient 구현HttpClient implementation

Xamarin 개발자는 항상 네이티브 네트워킹 클래스를 코드에 사용할 수 있지만 HttpClient 클래스에서 사용 되는 네트워킹 스택을 결정 하는 옵션도 있습니다.Xamarin developers have always been able to use the native networking classes in their code, however there is also an option that determines which networking stack is used by the HttpClient classes. 이는 네이티브 플랫폼의 속도와 보안상 이점이 있는 친숙 한 .NET API를 제공 합니다.This provides a familiar .NET API that has the speed and security advantages of the native platform.

옵션은 다음과 같습니다.The options are:

  • 관리 되는 스택 – Mono에서 제공 되는 네트워크 기능 또는Managed stack – the Mono-provided network functionality, or
  • Native stack – 기본 플랫폼 (Android, IOS 또는 macos)에서 제공 하는 다양 한 네트워킹 api입니다.Native stack – various networking APIs provided by the underlying platforms (Android, iOS, or macOS).

관리 되는 스택은 기존 .NET 코드와 가장 높은 수준의 호환성을 제공 하지만 속도가 느려지고 실행 파일 크기가 커질 수 있습니다.The managed stack provides the highest level of compatibility with existing .NET code, however it can be slower and result in larger executable size.

기본 옵션은 더 빠르고 보안 (TLS 1.2 포함)을 사용할 수 있지만 HttpClient 클래스의 일부 기능과 옵션은 제공 하지 않을 수 있습니다.The native options can be faster and have better security (including TLS 1.2), but may not provide all the functionality and options of the HttpClient class.

SSL/TLS 구현 (Android)SSL/TLS implementation (Android)

Android 프로젝트 옵션을 통해 지원 되는 SSL/TLS 구현도 선택할 수 있습니다.Android project options also let you choose which SSL/TLS implementation to support:

  • Mono/Managed – Android에서 TLS 1.1Mono/Managed – TLS 1.1 on Android
  • Native – Android에서 TLS 1.2.Native – TLS 1.2 on Android.

새 Xamarin 프로젝트는 기본적으로 모든 프로젝트에 대해 권장 되는 TLS 1.2을 지 원하는 네이티브 구현에 대 한 기본 구현 이지만, 호환성을 위해 필요한 경우 관리 코드로 다시 전환할 수 있습니다.New Xamarin projects default to the native implementation that supports TLS 1.2 (which is recommended for all projects), however you can switch back to the managed code if required for compatibility reasons.

중요

Mono/Managed 옵션이 iOS 및 Mac 프로젝트 옵션에서 제거 되었습니다.The Mono/Managed option has been removed from iOS and Mac project options.

기본 옵션은 iOS 및 Mac 플랫폼에서 항상 사용 됩니다.The Native option is always used on iOS and Mac platforms.

플랫폼별 세부 정보Platform-specific details

위의 요약은 Xamarin 프로젝트의 HttpClient 및 SSL/TLS 구현에 대 한 프로젝트 수준 설정을 설명 합니다.The above summary explains the project-level settings for HttpClient and SSL/TLS implementation in Xamarin Projects. HttpClient 구현은 코드에서 동적으로 설정할 수도 있습니다.The HttpClient implementation can also be set dynamically in code. 자세한 내용은 다음 플랫폼별 가이드를 참조 하세요.Refer to these platform-specific guides for more information:

요약Summary

응용 프로그램은 가능 하면 TLS (Transport Layer Security) 1.2를 사용 해야 합니다.Applications should use Transport Layer Security (TLS) 1.2 wherever possible. 이 문서의 지침에 따라 기존 응용 프로그램의 설정을 업데이트 한 후 고객에 게 다시 빌드하고 다시 배포 해야 합니다.You should update the settings in existing applications according to the instructions in this article, then re-build and re-deploy to your customers.