21

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

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

对于测试,我thin用作服务器,在我的开发机器上运行,可以通过 N 模拟器访问。自签名证书适用于我的开发机器上的浏览器,如果我切换到运行thinsans SSL,应用程序可以正常访问服务器。因此,这不是连接问题。

我使用此站点上的说明创建了自签名证书:

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"

根据这个 Stack Overflow answer,该example.crt文件是一个 PEM 文件。在其他地方,我看到了创建“组合 PEM”文件的说明。但是,我尝试了这两种方法,但都没有运气。

在网络安全配置方面,我已经尝试过<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 文件,作为原始资源,我们究竟应该放入什么来使这项工作有效?

4

1 回答 1

7

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

于 2016-04-14T16:28:23.907 回答