gpt4 book ai didi

android - 如何从代理后面的 Android 应用程序通过 HTTPS 访问服务?

转载 作者:行者123 更新时间:2023-11-30 02:00:11 25 4
gpt4 key购买 nike

我的 Android 应用程序通过 HTTPS 进行一些网络服务调用。因此,代理背后的用户(主要在公司网络中)无法使用该应用程序。所以我添加了一个自定义的 HostnameVerifier :

HostnameVerifier hostnameVerifier = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
};

这解决了问题,但也向 MITM 攻击者发送了公开邀请。我应该向 HostnameVerifier 添加什么样的检查?我还遇到了使用自定义 TrustManagers 并在那里添加我的证书的建议 - 但没有人谈论如果我更新我的服务器证书会发生什么 - 除非我使用新的 SSL 证书推送应用程序更新,否则用户将无法使用该应用程序(他们下载了该应用程序)。

简而言之,我的问题是如何使应用程序可以在代理之后访问,但又不易受到 MITM 的影响。还是不可能?如果不可能,我们是否会在使用代理后访问银行网站时“泄露”我们的密码?

最佳答案

一个简单的 http 代理不会对 https 通信进行任何更改,因此只要按照应有的方式使用代理,即配置为浏览器代理而不使用,一切都应该在不更改证书验证的情况下工作作为特殊 URL,例如 https://proxy.example.com/tunnel?site=https://site.example.org

还有代理和防火墙进行 SSL 拦截以扫描加密连接以查找恶意软件等。在这些情况下,证书的主机名通常匹配,但颁发者不同且不受操作系统信任。在这种情况下,必须将此颁发者 CA 证书作为受信任的证书导入操作系统。对于 Android,这是一个中央设置,不依赖于应用程序。

永远不要简单地禁用部分证书验证以使用户更容易,因为这样您就可以打开应用程序以防止中间人攻击。如果按预期方式使用代理,并且用户明确信任企业 SSL 拦截,那么您就不安全了,如果您在代码中添加了一些特殊异常(exception),那么您就不安全了。

关于android - 如何从代理后面的 Android 应用程序通过 HTTPS 访问服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31605469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com