Android için HttpClient Yığını ve SSL/TLS Uygulama Seçicisi
HttpClient Yığını ve SSL/TLS Uygulama seçicileri, Xamarin.Android uygulamalarınız tarafından kullanılacak HttpClient ve SSL/TLS uygulamasını belirler.
Projelerin System.Net.Http derlemesi'ne başvurusu gerekir.
Uyarı
Nisan 2018 – PCI uyumluluğu dahil olmak üzere artan güvenlik gereksinimleri nedeniyle büyük bulut sağlayıcılarının ve web sunucularının 1.2'den eski TLS sürümlerini desteklemeyi durdurması bekleniyor. Önceki sürümlerinde oluşturulan Xamarin projeleri Visual Studio TLS'nin eski sürümlerini kullanmak için varsayılan olarak kullanılır.
Uygulamalarınızı bu sunucularla ve hizmetlerle çalışmaya devam etmek için, Xamarin Native TLS 1.2 projelerinizi aşağıda gösterilen ve ayarlarıyla güncelleştirmeniz ve ardından uygulamalarınızı yeniden derlemeniz ve kullanıcılarınıza yeniden dağıtmanız gerekir.
Xamarin.Android HttpClient yapılandırması Project Seçenekler Android Seçeneklerialtında ve ardından Gelişmiş Seçenekler düğmesine tıklayın.
TLS 1.2 desteği için önerilen ayarlar:
Alternatif yapılandırma seçenekleri
AndroidClientHandler
AndroidClientHandler, yönetilen kodda her şeyi uygulamak yerine yerel Java/OS koduna temsilci seçen yeni işleyicidir. Bu önerilen seçenektir.
Avantajlar
- Daha iyi performans ve daha küçük yürütülebilir boyut için yerel API kullanın.
- En son standartlar için destek, örneğin. TLS 1.2.
Dezavantajlar
- Android 4.1 veya sonraki bir sürümü gerektirir.
- Bazı HttpClient özellikleri/seçenekleri kullanılamaz.
Yönetilen (HttpClientHandler)
Yönetilen işleyici, önceki Xamarin.Android sürümleriyle birlikte gönderilen tam olarak yönetilen HttpClient işleyicisidir.
Avantajlar
- MS .NET ve eski Xamarin sürümleriyle en uyumlu (özellikler) bu özelliktir.
Dezavantajlar
- Tam olarak işletim sistemiyle tümleşik değildir (örn. TLS 1.0 ile sınırlıdır).
- Genellikle çok daha yavaştır (örn. yerel API'ye göre şifreleme).
- Daha büyük uygulamalar oluşturmak için daha fazla yönetilen kod gerektirir.
İşleyici Seçme
ve arasındaki AndroidClientHandlerHttpClientHandler seçim, uygulamanın ihtiyaçlarına bağlıdır. AndroidClientHandler en güncel güvenlik desteği için önerilir, örneğin.
- TLS 1.2+ desteğine ihtiyaç vardır.
- Uygulamanız Android 4.1 (API 16) veya sonraki bir sürümü hedefledi.
- için TLS 1.2+ desteğine ihtiyacınız
HttpClientvardır. - için TLS 1.2+ desteğine ihtiyacınız
WebClientyok.
HttpClientHandler TLS 1.2+ desteğine ihtiyacınız varsa ancak Android 4.1'den önceki Android sürümlerini desteklemeniz gerekirse iyi bir seçenektir. ayrıca için TLS 1.2+ desteğine ihtiyacınız varsa iyi bir WebClient seçenektir.
Xamarin.Android 8.3'den itibaren, temel TLS sağlayıcısı olarak varsayılan olarak En sık ssl HttpClientHandler ( btls ) kullanılır. Sıkıcı SSL TLS sağlayıcısı aşağıdaki avantajları sunar:
- TLS 1.2+'yi destekler.
- Tüm Android sürümlerini destekler.
- Hem hem de için TLS 1.2+
HttpClientdesteğiWebClientsağlar.
Altta yer alan TLS sağlayıcısı olarak Sıkıcı SSL kullanmanın dezavantajı, sonuçta elde edilen APK'nin boyutunu artırabiliyor olmasıdır (desteklenen ABI başına yaklaşık 1 MB ek APK boyutu ekler).
Xamarin.Android 8.3'den itibaren varsayılan TLS sağlayıcısı, Ssl'yi Sıkıyor ( ) btls olur. Sıkıcı SSL kullanmak istemiyorsanız, özelliğini olarak ayarerek geçmiş yönetilen SSL uygulamasına geri dönebilirsiniz (derleme özelliklerini ayarlama hakkında daha fazla bilgi için $(AndroidTlsProvider)legacy bkz. $(AndroidTlsProvider)
ProgramLı Olarak Kullanma AndroidClientHandler
, Xamarin.Android.Net.AndroidClientHandler özel olarak HttpMessageHandler Xamarin.Android için bir uygulamadır.
Bu sınıfın örnekleri tüm HTTP bağlantıları java.net.URLConnection için yerel uygulama kullanır. Bu, teorik olarak HTTP performansında bir artış ve daha küçük APK boyutları sağlar.
Bu kod parçacığı, sınıfın tek bir örneği için açıkça nasıl bir HttpClient örnektir:
// Android 4.1 or higher, Xamarin.Android 6.1 or higher
HttpClient client = new HttpClient(new Xamarin.Android.Net.AndroidClientHandler ());
Not
Temel Alınan Android cihazı TLS 1.2'yi desteklemeli (yani. Android 4.1 ve sonrası). TLS 1.2 için resmi desteğin Android 5.0+'da olduğunu lütfen unutmayın. Ancak bazı cihazlar Android 4.1+'da TLS 1.2'yi destekler.
SSL/TLS uygulama derleme seçeneği
Bu proje seçeneği, tüm web isteği tarafından hangi temel TLS kitaplığının (hem hem de ) kullan olacağını HttpClient kontrol WebRequest eder. Varsayılan olarak TLS 1.2 seçilidir:
Örnek:
var client = new HttpClient();
HttpClient uygulaması Yönetilen olarak ayarlanmışsa ve TLS uygulaması Yerel TLS 1.2+olarak ayarlanmışsa, nesne HTTP istekleri için yönetilen ve TLS 1.2'yi (1.2 Kitaplığı tarafından sağlanır) otomatik olarak kullanır.
Ancak, HttpClient uygulaması olarak ayarlanırsa, tüm nesneler temel Alınan Java sınıfını kullanır ve HttpClientjava.net.URLConnectionHttpClient uygulama değerinden etkilenmez. WebRequest nesneleri, BurnesSL kitaplığını kullanır.
SSL/TLS yapılandırmasını denetlemenin diğer yolları
Xamarin.Android uygulamasının TLS ayarlarını denetlemesi için üç yol vardır:
- Project Seçenekler'de HttpClient uygulamasını ve varsayılan TLS Project seçin.
- kullanarak programlı
Xamarin.Android.Net.AndroidClientHandlerolarak. - Ortam değişkenlerini bildir (isteğe bağlı).
Önerilen üç seçenek arasında, uygulamanın tamamı için varsayılan ve TLS'yi bildirecek Xamarin.Android HttpMessageHandler proje seçeneklerini kullanmak önerilir. Ardından gerekirse, program aracılığıyla nesnelerin örneğini Xamarin.Android.Net.AndroidClientHandler oluşturma. Bu seçenekler yukarıda açıklanmıştır.
Üçüncü seçenek olan ortam değişkenlerini kullanma aşağıda açıklanmıştır.
Ortam Değişkenlerini Bildir
Xamarin.Android'de TLS kullanımıyla ilgili iki ortam değişkeni vardır:
XA_HTTP_CLIENT_HANDLER_TYPE– Bu ortam değişkeni, uygulamanınHttpMessageHandlerkullanabileceği varsayılanı bildirmektedir. Örnek:XA_HTTP_CLIENT_HANDLER_TYPE=Xamarin.Android.Net.AndroidClientHandlerXA_TLS_PROVIDER– Bu ortam değişkeni, hangi TLS kitaplığının ( veya ) (bu değişkenibtlslegacydefaultatla aynı) olacağını bildirecek:XA_TLS_PROVIDER=btls
Bu ortam değişkeni, projeye bir ortam dosyası ek tarafından ayarlanır. Ortam dosyası, AndroidEnvironmentderleme eylemine sahip Unix biçimli düz metin dosyasıdır:
Ortam değişkenleri ve Xamarin.Android hakkında daha fazla bilgi için lütfen Xamarin.Android Ortamı kılavuzuna bakın.





