android - 我们在 Android N 网络安全配置中使用什么来获得自签名证书?

标签 android ssl android-7.0-nougat

我正在尝试测试 N Developer Preview 的网络安全配置能力的各个方面。我大部分都在工作,但我被自签名证书场景难住了。

根据the docs ,Android N 应该对 PEM 或 DER 文件感到满意,因为它适用于其他证书验证方案。但是,我不经常使用自签名证书,并且我尝试使其正常工作的尝试不断遇到证书路径验证异常。

为了测试,我使用 thin作为服务器,在我的开发机器上运行,可以通过 N 模拟器访问。自签名证书适用于我的开发机器上的浏览器,如果我切换到运行 thin没有 SSL,应用程序可以很好地访问服务器。所以,这不是连接问题。

我使用 this site 上的说明创建了自签名证书:

sudo openssl genrsa -out "/etc/[webserver]/ssl/example.key" 2048
sudo openssl req -new -key "/etc/[webserver]/ssl/example.key" \
                 -out "/etc/[webserver]/ssl/example.csr"
sudo openssl x509 -req -days 365 -in "/etc/[webserver]/ssl/example.csr" \
                  -signkey "/etc/[webserver]/ssl/example.key"  \
                  -out "/etc/[webserver]/ssl/example.crt"

根据this Stack Overflow answer , example.crt文件是 PEM 文件。在其他地方,我看到了创建 a "combined PEM" file 的说明.但是,我尝试了这两种方法,但都没有成功。

在网络安全配置方面,我都尝试过<domain-config><debug-overrides> .后者看起来像:

<?xml version="1.0" encoding="utf-8"?>

<network-security-config>
  <debug-overrides>
    <trust-anchors>
      <certificates src="@raw/selfsigned"/>
    </trust-anchors>
  </debug-overrides>
</network-security-config>

但是,无论哪种情况,我都会收到验证错误。

我们究竟应该将什么作为 PEM 或 DER 文件、作为原始资源放入以使这项工作有效?

最佳答案

这似乎适用于 N Developer Preview 2,使用问题中显示的 openssl 脚本生成的 example.crt。目前,我将假设 N Developer Preview 2 与 N Developer Preview 1 相比发生了变化,这是造成这种变化的原因。

关于android - 我们在 Android N 网络安全配置中使用什么来获得自签名证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36552316/

相关文章:

android - 为什么我的应用程序下载的文件在卸载后会被删除?

android - 单击android中的后退按钮关闭进度条并停止后台任务(线程)

android - 如何在 Android 桌面上显示小部件?

android - Burp Suite - Pixel 2 XL (Android P) 找不到使用 Burp Suite 的证书方法

java - 在运行时加载 java 信任存储 - 在 jvm 启动后?

android-7.0-nougat - 如何在没有 Root 的情况下在三星上隐藏 "Emergency mode"?

Android Studio Java错误

android - react native 推送通知 onNotification 不会触发

ios - 如何在 iOS 上禁用 SSL 2.0?

Android N 在 TextAppearanceSpan 中崩溃