Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
HttpClient Stack 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 derlemesine başvurması gerekir.
Uyarı
Nisan 2018 – PCI uyumluluğu da 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. Visual Studio'nun önceki sürümlerinde oluşturulan Xamarin projeleri varsayılan olarak TLS'nin eski sürümlerini kullanır.
Uygulamalarınızın bu sunucu ve hizmetlerle çalışmaya devam ettiğinden emin olmak için Xamarin projelerinizi aşağıda gösterilen ve Native TLS 1.2 ayarlarıyla Android HttpClient güncelleştirmeniz, ardından uygulamalarınızı yeniden oluşturup kullanıcılarınıza yeniden dağıtmanız gerekir.
Xamarin.Android HttpClient yapılandırması, Project Seçenekleri Android Seçenekleri'ndedir >ve gelişmiş seçenekler düğmesine tıklayın.
TLS 1.2 desteği için önerilen ayarlar şunlardır:
Alternatif yapılandırma seçenekleri
AndroidClientHandler
AndroidClientHandler, yönetilen koddaki her şeyi uygulamak yerine yerel Java/OS koduna temsilcilik eden yeni işleyicidir. Önerilen seçenek budur.
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 üzerini gerektirir.
- Bazı HttpClient özellikleri/seçenekleri kullanılamaz.
Managed (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).
Dezavantajlar
- İşletim sistemiyle tam olarak tümleştirilmemiştir (örneğin, TLS 1.0 ile sınırlıdır).
- Genellikle yerel API'den çok daha yavaştır (örn. şifreleme).
- Daha büyük uygulamalar oluşturarak daha fazla yönetilen kod gerektirir.
İşleyici Seçme
ve HttpClientHandler arasında AndroidClientHandler seçim, uygulamanızın gereksinimlerine bağlıdır. AndroidClientHandler en güncel güvenlik desteği için önerilir, örneğin.
- TLS 1.2+ desteğine ihtiyacınız vardır.
- Uygulamanız Android 4.1 (API 16) veya sonraki sürümleri hedefleiyor.
- için TLS 1.2+ desteğine
HttpClientihtiyacınız vardır. - için
WebClientTLS 1.2+ desteğine ihtiyacınız yoktur.
HttpClientHandler TLS 1.2+ desteğine ihtiyacınız varsa ancak Android 4.1'den önceki Android sürümlerini desteklemeniz gerekiyorsa iyi bir seçimdir. için TLS 1.2+ desteğine WebClientihtiyacınız varsa da iyi bir seçimdir.
Xamarin.Android 8.3 sürümünden başlayarak, HttpClientHandler temel TLS sağlayıcısı olarak varsayılan olarak Sıkıcı SSL (btls) kullanılır. Sıkıcı SSL TLS sağlayıcısı aşağıdaki avantajları sunar:
- TLS 1.2+ desteği sağlar.
- Tüm Android sürümlerini destekler.
- Hem hem de
HttpClientWebClientiçin TLS 1.2+ desteği sağlar.
Yetersiz TLS sağlayıcısı olarak Sıkıcı SSL kullanmanın dezavantajı, sonuçta elde edilen APK boyutunu artırabilmesidir (desteklenen ABI başına yaklaşık 1 MB ek APK boyutu ekler).
Xamarin.Android 8.3 sürümünden itibaren varsayılan TLS sağlayıcısı Sıkıcı SSL 'dir (btls). Sıkıcı SSL kullanmak istemiyorsanız, özelliğini legacy olarak ayarlayarak geçmiş yönetilen SSL uygulamasına $(AndroidTlsProvider) geri dönebilirsiniz (derleme özelliklerini ayarlama hakkında daha fazla bilgi için bkz. Derleme İşlemi).
Program Aracılığıyla Kullanma AndroidClientHandler
Xamarin.Android.Net.AndroidClientHandler, özellikle Xamarin.Android için bir HttpMessageHandler uygulamadır.
Bu sınıfın örnekleri tüm HTTP bağlantıları için yerel java.net.URLConnection uygulamayı kullanır. Bu, teorik olarak HTTP performansında ve daha küçük APK boyutlarında bir artış sağlayacaktır.
Bu kod parçacığı, sınıfın tek bir örneği için açıkça nasıl yapılacağını gösteren HttpClient bir ö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ın TLS 1.2'yi (yani. Android 4.1 ve üzeri). TLS 1.2 için resmi desteğin Android 5.0+'da olduğunu lütfen unutmayın. Ancak bazı cihazlar Android 4.1+ işletim sistemindeki TLS 1.2'i destekler.
SSL/TLS uygulama derleme seçeneği
Bu proje seçeneği, hem hem de HttpClient WebRequesttüm web istekleri tarafından hangi temel TLS kitaplığının kullanılacağını denetler. Varsayılan olarak TLS 1.2 seçilidir:
Örneğin:
var client = new HttpClient();
HttpClient uygulaması Yönetilen ve TLS uygulaması Yerel TLS 1.2+ olarak ayarlandıysa, client nesne HTTP istekleri için otomatik olarak yönetilen HttpClientHandler ve TLS 1.2 'yi (BoringSSL kitaplığı tarafından sağlanır) kullanır.
Ancak, HttpClient uygulaması olarak ayarlanırsa, tüm HttpClient nesneler temel alınan Java sınıfını java.net.URLConnection kullanır ve TLS/SSL uygulama değerinden etkilenmez.AndroidHttpClient WebRequest nesneleri BoringSSL kitaplığını kullanır.
SSL/TLS yapılandırmasını denetlemenin diğer yolları
Xamarin.Android uygulamasının TLS ayarlarını denetlemesinin üç yolu vardır:
- Proje Seçenekleri'nde HttpClient uygulamasını ve varsayılan TLS kitaplığını seçin.
- kullanarak
Xamarin.Android.Net.AndroidClientHandlerprogram aracılığıyla. - Ortam değişkenlerini bildirme (isteğe bağlı).
Üç seçenek arasında önerilen yaklaşım, tüm uygulama için varsayılan HttpMessageHandler ve TLS'yi bildirmek üzere Xamarin.Android proje seçeneklerini kullanmaktır. Daha sonra gerekirse, program aracılığıyla nesnelerin örneğini oluşturun Xamarin.Android.Net.AndroidClientHandler . Bu seçenekler yukarıda açıklanmıştır.
Ortam değişkenlerini kullanarak üçüncü seçenek aşağıda açıklanmıştır.
Ortam Değişkenlerini Bildirme
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ın kullanacağı varsayılanHttpMessageHandlerdeğeri bildirir. Örneğin:XA_HTTP_CLIENT_HANDLER_TYPE=Xamarin.Android.Net.AndroidClientHandlerXA_TLS_PROVIDER– Bu ortam değişkeni , veyadefault(bu değişkenin atlanmasıyla aynıdır) hangi TLS kitaplığının kullanılacağınıbtlslegacybildirir:XA_TLS_PROVIDER=btls
Bu ortam değişkeni, projeye bir ortam dosyası eklenerek ayarlanır. Ortam dosyası, AndroidEnvironment derleme eylemine sahip Unix biçimli bir 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.





