Delphi veya C++Builder ile güvenli bir Android uygulaması yayınlamak her zaman fazladan bir angarya anlamına gelmiştir: OpenSSL'in çalışma zamanında orada olması için libssl.so ve libcrypto.so dosyalarını APK içinde paketlemek. sgcWebSockets bu angaryayı ortadan kaldırır. Yeni bir yerel TLS arka ucu olan iohAndroidTLS, şifrelemeyi Android'in kendisine devreder, böylece uygulamanız dağıtılacak hiçbir OpenSSL kitaplığı olmadan TLS üzerinden bağlanır. Enterprise sürümünde mevcuttur.
Kaputun altında arka uç, platformun kendi javax.net.ssl.SSLEngine bileşenini JNI üzerinden çalıştırır. İşletim sistemi el sıkışmayı, kayıt şifrelemeyi ve sertifika doğrulamasını gerçekleştirir. sgcWebSockets yalnızca düz metni içeri besler ve şifreli metni dışarı alır, bu da tüm TLS yığınının Google'ın gönderdiği ve işletim sistemiyle birlikte yamaladığı yığın olması anlamına gelir.
Geçiş için tek satır
TLS arka ucu TLSOptions.IOHandler aracılığıyla seçilir. Android'in yerel TLS'ini kullanmak için bunu iohAndroidTLS olarak ayarlayın. Ağ kodunuzdaki diğer her şey aynı kalır.
uses
sgcWebSocket, sgcWebSocket_Types;
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohAndroidTLS;
WSClient.URL := 'wss://www.esegece.com:2053';
WSClient.Active := True;
Diğer platformlarda uygun olan arka ucu kullanmaya devam edersiniz: iohOpenSSL her yerde çalışır ve iohSChannel, Windows üzerinde yerel, hiçbir şey dağıtmayan seçenektir. Küçük bir koşul, tek bir istemci bileşenini her hedefte doğru tutar.
WSClient.TLS := True;
{$IFDEF ANDROID}
WSClient.TLSOptions.IOHandler := iohAndroidTLS; // native, no OpenSSL .so
{$ELSE}
{$IFDEF MSWINDOWS}
WSClient.TLSOptions.IOHandler := iohSChannel; // native on Windows
{$ELSE}
WSClient.TLSOptions.IOHandler := iohOpenSSL; // OpenSSL elsewhere
{$ENDIF}
{$ENDIF}
WSClient.URL := 'wss://www.esegece.com:2053';
WSClient.Active := True;
APK'da OpenSSL yok
Asıl öne çıkan fayda budur. Yerel arka uçla APK hiçbir libssl.so ve hiçbir libcrypto.so taşımaz. Paket daha küçüktür ve bir daha asla bir OpenSSL sürümünün peşinden koşmazsınız, bir güvenlik bildirimine karşı yeniden derleme yapmazsınız veya bir kitaplık derlemesini bir cihaza eşlemezsiniz. TLS uygulaması cihazda bulunur ve Android tarafından bakımı yapılır, böylece güvenlik düzeltmeleri sizin yayın döngünüz aracılığıyla değil, sistem güncellemeleri aracılığıyla gelir.
Ayrıca bir tür dağıtım sorununu da ortadan kaldırır. "Kitaplık bulunamadı" yoktur, paketlenen .so ile cihaz arasında mimari uyuşmazlığı yoktur ve denetlenecek ikinci bir kriptografi kopyası yoktur. Tek bir özelliği ayarlar ve yayınlarsınız.
Eksiltilmiş değil, tam bir TLS istemcisi
Yerel arka uç eksiksiz bir istemcidir. Sunucuyu Android sistem güven deposuna karşı doğrular ve ana bilgisayar adı doğrulaması gerçekleştirir, böylece genel sertifika yetkililerine yapılan bağlantılar fazladan yapılandırma olmadan çalışır. TLS 1.3 ile anlaşır ve Android 10 (API 29) ile sonrasında ALPN'i destekler, bu da el sıkışma sırasında http/1.1 gibi uygulama protokollerini duyurmanıza olanak tanır.
Diğer her arka uçla aynı TLSOptions API'sinin arkasında yer aldığından, tanıdık özellikler çalışmaya devam eder. VerifyCertificate eş doğrulamasını açar veya kapatır, RootCertFile özel bir yetkiliye güvenir, CertFile ve Password bir istemci sertifikası sunar ve ALPNProtocols anlaşılacak protokolleri listeler.
WSClient.TLS := True;
WSClient.TLSOptions.IOHandler := iohAndroidTLS;
WSClient.TLSOptions.VerifyCertificate := True;
WSClient.TLSOptions.ALPNProtocols.Add('http/1.1'); // Android 10 (API 29)+
WSClient.Host := 'your.server.com';
WSClient.Port := 443;
WSClient.Active := True;
Zaten kullandığınız bileşenlerle çalışır
Arka uç paylaşılan TLSOptions içine bağlanmıştır, bu nedenle WebSocket istemcisiyle sınırlı değildir. TCP ve HTTP/2 istemcileri ve TLSOptions sunan diğer bileşenler bunu aynı şekilde seçer. Kodunuz zaten TLSOptions ayarlıyorsa, yerel Android TLS eklemek tek bir atamadır ve bağlantıyı nasıl açtığınızda, gönderdiğinizde veya aldığınızda hiçbir değişiklik olmaz.
Apple'da aynı fikir
iOS veya macOS'u da hedefliyorsanız, eşlik eden iohAppleTLS arka ucu orada aynı işi yapar: dağıtılacak hiçbir OpenSSL .dylib olmadan Apple'ın kendi TLS'ini kullanır ve Network.framework aracılığıyla TLS 1.3'e ulaşır. Desen aynıdır, yalnızca her platform için yerel işleyiciyi seçersiniz. Ayrıntıları Yerel Apple TLS sayfasında okuyabilirsiniz.
Kullanılabilirlik
Yerel Android TLS (iohAndroidTLS) sgcWebSockets'in Enterprise sürümünde gelir. Dört TLS arka ucunun, her platformda OpenSSL'in, Windows'ta SChannel'in ve yerel Android ve Apple işleyicilerinin tam dökümü için SSL / TLS bölümüne ve Yerel Android TLS sayfasına bakın.
sgcWebSockets indirme sayfasından indirin veya GetIt ya da kayıtlı hesabınız aracılığıyla edinin.
Sorular, geri bildirim veya bir Android uygulamasını OpenSSL'den taşıma konusunda yardım mı? İletişime geçin, kodu yazan kişilerden bir yanıt alacaksınız.
