傳輸層安全性 (TLS) 1.2
使用最新版的 傳輸層安全性 (TLS) 對於確保應用程式網路通訊安全很重要。
警告
2018 年 4 月 – 由於安全性需求增加,包括 PCI 合規性、主要雲端提供者和網頁伺服器,預計將停止支援 1.2 之前的 TLS 版本。 在舊版Visual Studio中建立的 Xamarin 項目預設為使用舊版 TLS。
為了確保您的應用程式能夠繼續使用這些伺服器和服務, 您應該更新您的 Xamarin 專案以使用下列設定,然後將您的應用程式 重新建置並重新部署到您的使用者。
項目必須參考 System.Net.Http 元件,並加以設定,如下所示。
將 Xamarin.Android 更新為 TLS 1.2
更新 HttpClient 實作和 SSL/TLS 實作選項,以啟用 TLS 1.2 安全性。
注意
需要 Android 5.0 或更新版本。
您可以在 [項目屬性 Android 選項] 中找到這些設定,然後按兩下 [進階] 按鈕:>
將 Xamarin.iOS 更新為 TLS 1.2
更新 HttpClient 實作選項以啟用 TSL 1.2 安全性。
您可以在項目屬性 > iOS 組建中找到此設定:
將 Xamarin.Mac 更新為 TLS 1.2
在 Visual Studio for Mac 中,若要在 Xamarin.Mac 應用程式中啟用 TLS 1.2,請在 Project Options > Build > Mac 組建中更新 HttpClient 實作選項:
警告
即將推出的 Xamarin.Mac 4.8 版只會支援 macOS 10.9 或更高版本。 舊版 Xamarin.Mac 支援 macOS 10.7 或更高版本,但這些較舊的 macOS 版本缺乏足夠的 TLS 基礎結構,無法支援 TLS 1.2。 若要以 macOS 10.7 或 10.8 為目標,請使用 Xamarin.Mac 4.6 或更舊版本。
替代組態選項
本節討論上述 TLS 1.2 支援的組態替代方案。 應用程式開發人員只有在瞭解使用不同 TLS 支援層級的風險時,才應考慮這些替代方案。
HttpClient 實作
Xamarin 開發人員一直能夠在其程式代碼中使用原生網路類別,不過也有一個選項可決定類別使用 HttpClient
哪一個網路堆疊。 這會提供熟悉的 .NET API,其具有原生平臺的速度和安全性優勢。
選項是:
- 受控堆疊 – 單一提供的網路功能,或
- 原生堆疊 – 基礎平臺所提供的各種網路 API(Android、iOS 或 macOS)。
Managed 堆疊提供與現有 .NET 程式代碼的最高相容性層級,但速度可能會變慢,併產生較大的可執行檔大小。
原生選項可能更快且具有更好的安全性(包括 TLS 1.2),但可能無法提供 類別的所有功能和選項 HttpClient
。
SSL/TLS 實作 (Android)
Android 項目選項也可讓您選擇要支援的 SSL/TLS 實作:
- Mono/Managed – Android 上的 TLS 1.1
- 原生 – Android 上的 TLS 1.2。
新的 Xamarin 專案預設為支援 TLS 1.2 的原生實作,但基於相容性考慮,您可以視需要切換回 Managed 程式代碼。
平臺特定詳細數據
上述摘要說明 Xamarin Projects 中 HttpClient 和 SSL/TLS 實作的專案層級設定。 您也可以在程式代碼中動態設定 HttpClient 實作。 如需詳細資訊,請參閱這些平臺特定指南:
摘要
應用程式應盡可能使用傳輸層安全性 (TLS) 1.2。 您應該根據本文中的指示更新現有應用程式中的設定,然後重新建置並重新部署給您的客戶。
相關連結
- 應用程式傳輸安全性
- Xamarin.Android 環境
- Xamarin Cycle 9 (2017 年 2 月)
- TLS (维基百科)
- Mono 4.8 版本資訊 - TLS 1.2 支援
- BoringSSL
- HttpClient、HttpClientHandler 和 WebRequestHandler 說明
- System.Net.HttpClient
- System.Net.HttpClientHandler
- System.Net.HttpMessageHandler
- System.Net.HttpWebRequest
- System.Net.WebClient
- System.Net.WebRequest
- java.net.URL 連線 ion
- Foundation.CFNetwork
- Foundation.NSUrl 連線 ion
- System.Net.WebRequest