android - 移动应用程序中的客户端 SSL 证书有多安全?

标签 android ios security ssl client-certificates

我希望在我的 Android/iOS 应用和我的可访问 Internet 的后端服务之间进行安全通信,因此我正在研究 HTTPS/SSL。

如果我创建自签名证书,然后将客户端证书放入应用程序并导致后端服务要求那个客户端证书,这真的安全吗

这就是我要问的原因。似乎可以通过询问 .apk 来“破解”客户端证书。客户端证书只是一个字符串常量,对吧?这意味着任何人都可以使用客户端证书访问我的后端。 .apk(和 iOS 等效文件)是否足够不透明以防止发现客户端证书

最佳答案

您是否使用 SSL 证书进行客户端身份验证?并不是说这个问题真的很重要。攻击者可以访问您存储在应用程序中的任何私钥。每个客户端都应该有自己的证书和 key 对,以防止大规模泄露。您的服务器还应该强制执行保护措施,确保受感染的客户端不能只请求任何内容。

这适用于任何身份验证方案。如果您嵌入密码、API key 、解密 key 等。设备上的任何东西都应该被认为是可访问的。

证书增加的安全性部分来自于没有暴力破解。如果您为每个客户端使用用户名/密码路由,则可以猜出密码。与 API key 相同(尽管它们更长更难)。使用证书,这是一种完全不同的攻击类型,也是一个相当困难的问题。

但是,最重要的是,后端服务不应允许应用程序执行通常不会执行的任何操作。

现在,处理证书,您将遇到一大堆其他问题。您可能希望使用自签名 CA 证书签署每个客户端证书。根据您的用例,管理该 CA 证书可能会有问题。您是要即时生成这些客户端证书,还是自己手动生成?意思是,这是一个百万人可以下载的应用程序,你需要一个自动生成它们的系统吗?或者这是您个人将处理生成证书的私有(private)/内部应用程序?

关于android - 移动应用程序中的客户端 SSL 证书有多安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9763092/

相关文章:

java - Elasticsearch插件ThreadPermission安全异常

java - 延迟数据导致 OnCreate 上出现 NullPointerException

java - JSON语法错误的php函数?

javascript - 从 DOM 中隐藏数据(保护数据)

ios - UITableView 单元格被发送 setSelected :NO during layoutView

ios - Segue to popover for iPhone 在 iOS 10 中不起作用?

linux - 从 nmcli linux shell 脚本获取信息

java - 添加 fragment 时出现 Glide 库错误或应用程序崩溃,并且还显示该特定问题的图像

android - 从 Kotlin 中的字符串创建数据类对象的 ArrayList

ios - 淡出 NavigationBar 标题