我正在开发支持网络的android应用程序,该应用程序使用SSL客户端证书对我的服务器进行身份验证和安全连接。如何以及使用何种服务器证书与Android SSL客户端证书身份验证
我有两个问题:(1)我应该使用自签名服务器证书还是商业证书? (2)我应该将服务器证书包含在用户安装的apk文件中,还是应该将应用程序连接到我的服务器以通过网络获取服务器证书(以使设备信任服务器证书)?
当我问我该“应该”做什么时,我在问每个选择有哪些好处和坏处?
现在我正在使用包含在apk文件中的自签名证书。当用户第一次运行应用程序时,它会将包含的自签名证书读取到信任存储中,以便设备无需投诉即可连接到我的服务器。我想如果我使用商业证书,那么我的问题#2可能会变得没有实际意义,因为设备可能信任来自服务器的证书而没有问题。
一个更可能相关的细节:这个应用程序不是通过安卓市场发布。用户将从我的服务器上下载应用程序,这样我可以包含任何我想要的服务器证书,如果需要的话,还可以为每个用户提供不同的服务器证书。
我对我的两个问题的每个可能答案的各种优点和缺点有自己的想法,但我对其他人 - 希望安全意识 - 在这个问题上不得不说的话感兴趣。
提前致谢!
+1,因为我面临类似的问题。你最终走向了什么方向? – 2012-03-23 15:09:41
我选择了自签名证书,原因如下:(1)商业证书的好处是浏览器识别。我的android应用程序是我创建的,所以我可以包含任何我想要的根证书,因此使用商业证书并不会带来任何边缘优势。另一方面,(2)商业证书带来了风险,因为现在我不仅容易受到攻击我的安全,而且容易受到证书颁发机构的攻击。如果CA遭到黑客攻击,丢失私钥或被欺骗发布带有域名的服务器证书,我可能会受到影响。机会渺茫,但为什么要拿?最后但并非最不重要的(3)钱。 – 2013-04-06 10:54:57