我希望我的Android/iOS应用和我的可通过互联网访问的后端服务之间进行安全通信,因此我正在研究HTTPS/SSL。
如果我创建自签名证书,然后将客户端证书放入应用程序中并要求后端服务需要该客户端证书,这样真的安全吗?
这就是我为什么问的原因。看起来客户端证书可能会被通过检查.apk文件而“破解”。客户端证书只是一个字符串常量,是吗?这意味着任何人都可以使用客户端证书来访问我的后端。 .apk文件(和iOS的等效文件)是否足够不透明,以防止发现客户端证书?
我希望我的Android/iOS应用和我的可通过互联网访问的后端服务之间进行安全通信,因此我正在研究HTTPS/SSL。
如果我创建自签名证书,然后将客户端证书放入应用程序中并要求后端服务需要该客户端证书,这样真的安全吗?
这就是我为什么问的原因。看起来客户端证书可能会被通过检查.apk文件而“破解”。客户端证书只是一个字符串常量,是吗?这意味着任何人都可以使用客户端证书来访问我的后端。 .apk文件(和iOS的等效文件)是否足够不透明,以防止发现客户端证书?
证书是无害的。需要保护的是私钥,而且只有设备本身安全,才能确保私钥的安全性。将证书和私钥与应用程序一同发布,这意味着任何拥有该应用程序的人都可以获得密钥,因此这并不提供任何安全保障。我认为您需要一些后安装的注册步骤。
哪种方法最好?这完全取决于您所关心的数据的敏感性和您愿意接受的风险水平。只有您才能回答这个问题。
Daniel Guillamot,一些我所掌握的技巧:
如果有其他想法,我很乐意听取。
APK 可以被访问和复制,所以将任何东西放入其中都没有作用。在安装后进行激活,可能需要将证书绑定到设备上。例如,可以通过将设备的 IMEI 放入证书扩展之一,并通过应用程序传递 IMEI 和证书来进行绑定(或者更好地,在身份验证和建立安全通道后传递 IMEI)。