2012-02-24 12 views

cevap

7

sadece senin müşterin ve sunucu, size (ve) bir şey satın almadan SSL kullanabilirsiniz. Sunucu ve istemciyi kontrol edersiniz, bu nedenle her biri yalnızca bir sertifikaya güvenmeli, diğeri diğerine ait olmalı ve bu amaçla CA'ya ihtiyacınız yok.

İşte üst düzey yaklaşım. Kendinden imzalı bir sunucu SSL sertifikası oluşturun ve web sunucunuza dağıtın. Bu amaç için Android SDK ile verilen tuş takımını kullanabilirsiniz. Ardından, kendinden imzalı bir istemci oluşturun ve uygulamanızda bir kaynak olarak uygulamanıza dahil edilen bir özel anahtar deposunda uygulamanızı dağıtın (tuş takımı bunu da oluşturur). Sunucuyu istemci tarafında SSL kimlik doğrulaması gerektirecek şekilde yapılandırın ve yalnızca oluşturduğunuz istemci sertifikasını kabul edin. İstemciyi, kendisini tanımlamak için bu istemci tarafı sertifikasını kullanacak şekilde yapılandırın ve yalnızca sunucunuzun o tarafında yüklü olan sunucu tarafı sertifikasını kabul edin.

Bunun için adım adım, burada garantilendiğinden çok daha uzun bir yanıttır. Web'de hem sunucu hem de istemci tarafında, kendinden imzalı SSL sertifikasıyla nasıl başa çıkılacağına dair kaynaklar olduğu için bunu aşamalı olarak öneririm. Ayrıca O'Reilly tarafından yayınlanan kitabımda Application Security for the Android Platform kitabında da eksiksiz bir yürüyüş var.


(Eğer Android kullanıyorsanız bir KeyStore) Normalde sometype bir anahtar deposundaki o sertifikası/özel anahtar saklamak ve bundan sonra bu anahtar deposu şifreli olacak. Bu şifreleme bir şifreye dayanmaktadır, bu yüzden ya (1) bu şifreyi istemcinizde bir yere saklamanız ya da (2) kullanıcıya, istemci uygulamanızı başlattıklarında şifre sormanız gerekir. Yapmanız gereken şey, sizin kişisel durumunuza bağlıdır. Eğer (2) kabul edilebilir ise, o zaman şifreleneceğinden ve şifrenin herhangi bir yerde saklanmayacağından (aksi halde kullanıcının her zaman yazması gerekeceğinden), ters mühendisliğinize karşı güvenliğinizi korudunuz. (1) 'i yaparsanız, birileri müşterinizi tersine çevirebilir, şifreyi alabilir, anahtar deposunu alabilir, özel anahtarı ve sertifikayı şifreleyebilir ve sunucuya bağlanabilecek başka bir istemci oluşturabilir.

Bunu önlemek için yapabileceğiniz hiçbir şey yoktur; kodunuzu tersine mühendislik yaparak (gizleme yoluyla) yapabilirsiniz, ancak bunu imkansız kılabilirsiniz. Bu yaklaşımlarla hangi riski azaltmaya çalıştığınızı belirlemeniz gerekir ve bunu azaltmak için ne kadar çaba harcanması gerekir.

+0

Birinin bu sertifikayı uygulamadan çalması ve sahte bir uygulamada kullanması mümkün mü? – pyeleven

+0

Evet. Yukarıdaki revize edilmiş cevaba bakın. – jeffsix

+0

Bu, kararımızı vermek için yeterli bilgi, teşekkürler! Android uygulama sertifikasının tüm bunlarla nasıl bağlantılı olduğunu anlamak isterim, bana doğru yönde işaret edebilir misiniz? Uygulama sertifikası istemci tarafı ssl sertifikası olarak kullanılabilir mi? – pyeleven

1

Bu, yerinde doğru kimlik doğrulamasıyla çalışacaktır. Bu web hizmeti yalnızca, yetkili uygulamalar/cihazların erişimine gerek istemci tarafında SSL sertifikaları ile gidecek kesinlikle eminseniz Securing communication from android to a web service

+0

Maalesef buna ihtiyacımız var çünkü uygulayacağımız özellik kimlik doğrulama kullanmıyor. – pyeleven

1

) o = yardımcı Umut: Sadece üzerine stumpled İlk mesaj bu biriydi ve sunucudaki erişimi yalnızca yetkili sertifikaları olan istemcilere sınırlamak. Bu, SSL'yi her zaman zorlamanın bonus özelliğine sahiptir, böylece açık bir kanal üzerinden hiç kimsenin sırrını sevmezsiniz. İşte Apache için hızlı bir kılavuz, ama nginx çok kullanabilirsiniz:

http://it.toolbox.com/blogs/securitymonkey/howto-securing-a-website-with-client-ssl-certificates-11500

+0

Bu sertifika farklı bir uygulama tarafından kopyalanabilir mi? Bu uygulama hizmeti kullanabilecek mi? – pyeleven

İlgili konular