我正在开发一款使用SSL客户端证书来验证和保护与我的服务器的连接的网络安全的安卓应用程序。
我有两个问题:(1)我应该使用自签名的服务器证书还是商业证书? (2)我应该将服务器证书包含在用户安装的apk文件中,还是让应用程序通过网络连接到我的服务器以获取服务器证书(为了使设备信任服务器证书)?
当我问“应该”做什么时,我是在问每种选择的利弊有哪些?
现在我正在使用包含在apk文件中的自签名证书。当用户第一次运行应用程序时,它会将包含的自签名证书读入信任库,以便设备可以无误地连接到我的服务器。我想如果我使用商业证书,那么我的第二个问题可能就没有意义了,因为设备可能会毫无问题地信任来自服务器的证书。
还有一个可能相关的细节:这个应用程序并不通过安卓市场进行分发。用户将从我的服务器下载该应用程序,因此我可以包含任何我想要的服务器证书,甚至为每个用户都提供一个不同的证书。
我对我的两个问题的各种答案的优点和缺点有自己的想法,但我对其他人的看法也感兴趣,尤其是那些对安全有关注的人。
提前感谢您!