【发布时间】:2011-05-09 23:10:58
【问题描述】:
我正在开发一个支持网络的 android 应用程序,它使用 SSL 客户端证书来验证和保护与我的服务器的连接。
我有两个问题:(1)我应该使用自签名服务器证书还是商业证书? (2) 我应该在用户安装的 apk 文件中包含服务器证书,还是应该让应用程序连接到我的服务器以通过网络获取服务器证书(为了使设备信任服务器证书)?
当我问我“应该”做什么时,我问的是每种选择的好处和坏处是什么?
现在我正在使用包含在 apk 文件中的自签名证书。当用户第一次运行应用程序时,它会将包含的自签名证书读入信任库,因此设备将连接到我的服务器而不会产生任何投诉。我想如果我使用商业证书,那么我的问题 #2 可能会变得毫无意义,因为设备可以毫无问题地信任来自服务器的证书。
另一个可能相关的细节:此应用程序不是通过 android 市场分发的。用户将从我的服务器下载应用程序,因此我可以包含我想要的任何服务器证书,如果需要,包括为每个用户提供不同的证书。
对于我的两个问题的每个可能答案的各种优点和缺点,我有自己的想法,但我对其他人(希望是出于安全考虑)对此事的看法很感兴趣。
提前致谢!
【问题讨论】:
-
+1 因为我遇到了类似的问题。你最终的方向是什么?
-
我选择自签名证书的原因如下: (1) 商业证书的好处是浏览器识别。我的 android 应用程序是我创建的,因此我可以包含我想要的任何根证书,因此使用商业证书不会给我带来边际优势。另一方面,(2)商业证书引入了风险,因为现在我不仅容易受到针对我的安全性的攻击,而且还有证书颁发机构的攻击。如果 CA 被黑客入侵、丢失其私钥或被欺骗使用我的域名颁发服务器证书,我可能会受苦。机会渺茫,但为什么要抓住它?最后但并非最不重要的 (3) 钱。
标签: android ssl ssl-certificate