【问题标题】:What Do We Use for Android N Network Security Configuration for a Self-Signed Certificate?我们为自签名证书的 Android N 网络安全配置使用什么?
【发布时间】:2016-04-11 15:00:13
【问题描述】:

我正在尝试测试 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 answerexample.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 文件、作为原始资源放入以使这项工作有效?

【问题讨论】:

  • 你添加android:debuggable = true了吗?
  • @Prera​​kSola:我正在测试一系列产品风格,但我始终使用debug 作为构建类型。
  • 我通过生成您所概述的自签名证书进行了尝试,它确实有效。我复制了 example.crt 文件,将其放在原始资源文件夹中,并删除了扩展名。我认为唯一的大区别是我在本地运行 Tomcat 作为 Web 服务器。需要仔细检查的一件事是您将元数据元素添加到 AndroidManifest.xml 文件中。该证书适用于 xml 文件中的 &lt;base-config&gt;&lt;domain-config&gt;&lt;debug-overrides&gt;
  • @GeorgeMulligan:出于好奇,您是否在 N Developer Preview 2 (NDP2) 或 NDP1 上尝试过?当我发布此内容时,我正在 NDP1 上进行测试。现在,使用带有 NDP2 的新模拟器,它可以使用纯 CRT 文件(而不是“组合 PEM”文件)。文件扩展名似乎无关紧要——不管有没有,它都可以工作,这是有道理的,因为它是一种原始资源。感谢您朝正确的方向踢!
  • @IgorGanapolsky:这是问题中显示的openssl 命令管道的输出。

标签: android ssl android-7.0-nougat


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 2021-02-15
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多