无法从我的 Android 模拟器访问 HTTPS
Posted
技术标签:
【中文标题】无法从我的 Android 模拟器访问 HTTPS【英文标题】:Can't access HTTPS from my Android Emulator 【发布时间】:2017-10-10 12:22:04 【问题描述】:我使用公司代理,所有访问互联网的东西都需要关于代理的特殊配置。我在 CentOS 7 上,使用 CNTLMD 处理代理隧道,使用 React Native 为移动设备开发。而且我使用的是android Studio提供的Android Emulator。
当我尝试在浏览器中打开 Google 时,我首先注意到我的模拟器无法访问任何 HTTPS 协议。谷歌内部重定向到 HTTPS,我总是收到“连接被拒绝”错误。后来(本周),尝试使用 Axios 和 Fetch 发出 HTTP/HTTPS 请求,这已成为一个严重的问题,因为我尝试连接的 API 是在 HTTPS 协议下的。
我的一个朋友在同一个项目中工作,但使用 Mac 没有 HTTPS 问题。我还尝试使用以下命令启动模拟器:
emulator -avd myemulator -http-proxy http://127.0.0.1:3128
还有
emulator -avd Marshmallow86 -http-proxy http://<network username>:<network password>@<ip>:<port>
他们什么都不做。
我尝试在 Android Studio 上设置 HTTP 和 HTTPS 代理,但这似乎不是正确的方法(也没有奏效)。
@edit
我在我的主机上设置了 http_proxy 并在没有参数的情况下启动了模拟器。效果也不好。
我错过了什么?
【问题讨论】:
【参考方案1】:上面那个不是android avd或者androidstudio的软件我没用过, 但它看起来像代理或 CA 证书问题。 由于差异似乎是由操作系统决定的,我会先猜测 CA 证书。
这个 android 页面有关于从命令行使用 openssl 的建议 探索并考虑导入证书。
https://developer.android.com/training/articles/security-config.html
这个 android 页面有代理配置的当前建议: https://developer.android.com/studio/run/emulator-networking.html
请注意,上述说明已针对新功能进行了更新。 过去我需要一个非 SSL 应用引擎开发服务器的代理 这与您的问题略有不同,但这是我使用的:
对于 SSL 代理,使用 apache Web 服务器,并将其配置为使用 SSL 通过安装自签名证书,然后添加 ProxyPass 和 ProxyPassReverse 在 httpd.conf 和 httpd-ssl.conf 中的 ProxyPass。 代理通行证/http://127.0.0.1:8080/
Apache 作为 SSL 代理接收到 https://127.0.0.1:443 的连接,并且 将它们传递给http://127.0.0.1:8080
然后在应用程序中,将在模拟器中运行的代码 可以使用地址 10.0.2.2 使用android子网路由表连接到dev。操作系统本地主机。
【讨论】:
以上是关于无法从我的 Android 模拟器访问 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章
如何从我的 react-native 项目构建 android apk?