无法导入我的自签名 CA,它似乎无法识别原始目录

Ben*_*n_B 5 ssl android self-signed

我正在尝试在 android 中导入我的自签名 CA,以便我可以将 HTTPS POST 发送到我自签名的 Web 服务器。按照 Google Doc( https://developer.android.com/training/articles/security-config.html#ConfigCustom ) 我创建了目录 res/raw/mycertificate 并在其中添加了我的证书。创建 /res/xml 目录并将 xml 文件 network_security_config.xml 添加到清单。我在 network_security_config.xml 文件中遇到了一些麻烦,因为当我创建标签时,Android Studio 在 src 上出现错误,告诉我“缺少 src 资源”,但我将 certificate.pem 放在目录 /res/raw 中/mycertificate,并且文件夹 raw 和 mycertificate 确实存在。如何让 Android Studio 正确采用该路径文件夹?

<network-security-config>
<domain-config>
    <domain includeSubdomains="true">192.168.1.200</domain>
    <trust-anchors>
          <certificates src="@raw/my_ca" />
    </trust-anchors>
</domain-config>
Run Code Online (Sandbox Code Playgroud)

Jac*_*k M 12

在网络配置 XML 文件中省略证书文件的文件扩展名。如果您的证书位于res/raw/my_cert.pem,请使用以下 XML 代码:

<network-security-config>
<domain-config>
    <domain includeSubdomains="true">192.168.1.200</domain>
    <trust-anchors>
          <certificates src="@raw/my_cert" />
    </trust-anchors>
</domain-config>
Run Code Online (Sandbox Code Playgroud)


Ant*_*gin 6

实际上,您必须指定证书的直接路径,而不是目录路径。

因此,如果您使用src="@raw/my_ca",名为 my_ca.cer (或 my_ca.der)的文件必须放置在资源文件夹内。

文档摘录(https://developer.android.com/training/articles/security-config.html#certificates):

  • 源代码

    CA证书的来源。每个证书可以是以下之一:

    • 指向包含 X.509 证书的文件的原始资源 ID。证书必须以 DER 或 PEM 格式编码。对于 PEM 证书,文件不得包含额外的非 PEM 数据,例如注释。
    • “system”为预装系统CA证书
    • “user”表示用户添加的 CA 证书