Android N 自签名证书的网络安全配置用什么?

What Do We Use for Android N Network Security Configuration for a Self-Signed Certificate?

我正在尝试测试 N Developer Preview 网络安全配置功能的所有方面。我的大部分工作正常,但我对自签名证书方案感到困惑。

根据 the docs,Android N 应该对 PEM 或 DER 文件感到满意,因为它适用于其他证书验证方案。但是,我不怎么使用自签名证书,我尝试让这个工作保持 运行 进入证书路径验证异常。

为了测试,我使用 thin 作为服务器,运行 在我的开发机器上,可通过 N 模拟器访问。自签名证书适用于我开发机器上的浏览器,如果我切换到 运行 thin sans 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, the example.crt file is a PEM file. Elsewhere, I see instructions for creating 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 相比发生了变化,这说明了变化。