我将自签名证书用于开发和测试目的。我研究了各种方法让 android 模拟器接受自签名证书。到目前为止,我发现了以下方法的变体:
- 提供您自己的将接受任何证书的安全类。
- 为您的应用创建一个包含自签名公钥的密钥库。
- 将属性 socket.relaxsslcheck 设置为 yes。
前两个选项非常复杂,并在您的代码中引入了对您的环境的依赖,例如开发、测试或生产。
选项 3 我喜欢,因为环境配置驱动行为,与将配置的数据源提供给在容器中运行的应用程序的 Web 容器不同。开发环境将指向开发数据源等。不幸的是,我正在努力让它工作。我尝试了以下方法:
使用 adb 设置属性
adb shell setprop socket.relaxsslcheck yes
使用 System.setProperty
System.setProperty("socket.relaxsslcheck","yes")
试图改变 /system/build.prop 和 default.prop
第一个选项会被忽略。根据我的阅读,似乎设置该属性将在重新启动后生效。但是该属性似乎是不稳定的,它无法在模拟器重新启动后继续存在。
System.setProperty(...)
由于工厂已经创建,这种方法似乎为时已晚。由于上述问题(代码中的开发环境特定代码),除非别无选择,否则我宁愿不走这条路。
最后一个选项应该在模拟器重启后仍然存在,但即使在运行adb root
.
我是 Android 开发新手,希望能提供一些关于最佳方法以及如何使其发挥作用的指导。