我正在开发Android上的电子邮件应用。当我们连接到向我们提供自签名证书的服务器时,我们在我们的信任管理器中没有它,那么我们向用户显示一条详细消息,告诉我们信任此证书的潜在风险,如MITM。 但是,如果用户仍然同意信任此证书,那么我们使用不安全的信任管理器,它信任此连接的任何证书。 这只会增加MITM攻击的可能性。
为了缓解这种情况(在某种程度上),我们在本地存储证书的序列号和颁发者DN。 现在,下次当用户尝试连接到此服务器时,我们会检查证书的序列号+颁发者DN与本地证书的相同程度。
这是解决特定问题的正确方法吗? 或者我们还能做些什么呢?
P.S。一个解决方案可以是用户获取证书并通过安装添加到默认信任管理器。但这超出了我的应用范围。