certificate.pem 文件的文件路径无效

问题描述 投票:0回答:1

大约 1 个月前,我在商店中发布了我们的第一个 Xamarin Android 应用程序,它运行良好。

突然,它开始在第一次 API 调用尝试时抛出

Javax.Net.Ssl.SSLHandshakeException: Unacceptable certificate
异常。我们发现我们的 API 服务器防火墙上的一个安全证书已过期,因此我们更新了它。

更新证书后,应用程序开始在第一次 API 调用尝试时抛出

java.security.cert.CertPathValidatorException: Trust anchor for certification path not found
异常。经过一番研究,我发现我应该在应用程序中添加一个证书文件并进行一些证书颁发机构配置。按照文档说明我向我们的安全部门询问了
certificate.pem
文件,将其添加到
Resources/raw/my_ca
文件夹(我手动创建)并在Xamarin Android项目的
network_security_config.xml
文件夹下创建了一个
Resources/xml
文件:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <domain-config>
    <domain includeSubdomains="true">mydomain.com.br/api</domain>
    <trust-anchors>
      <certificates src="@raw/my_ca/certificadopem"/>
    </trust-anchors>
  </domain-config>
</network-security-config>  

现在我收到以下错误:

invalid file path 'E:\MyProjectPath\MyApp.Android\obj\Debug\120\res\raw\my_ca\certificadopem.pem'.

我检查过,文件存在。我尝试删除 bin 和 obj 文件夹并清理/重建解决方案,但没有用。

我必须让应用程序重新上线,但我无法让它工作。我在这里错过了什么?

xamarin.android ssl-certificate pem
1个回答
0
投票

根据官方文档Configure a custom CA

<certificates src="@raw/my_ca/certificadopem"/> 
应该是
<certificates src="@raw/my_ca"/>
。然后,您需要将 PEM 或 DER 格式的自签名或非公共 CA 证书添加到 res/raw/my_ca.

所以,如果您的 CA 是自定义 CA,则

network_security_config.xml
应该是:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <domain-config>
    <domain includeSubdomains="true">mydomain.com.br/api</domain>
    <trust-anchors>
      <certificates src="@raw/my_ca"/>
    </trust-anchors>
  </domain-config>
</network-security-config>  

另外还有两种CA,不同的CA有不同的文件夹名称。所以你需要确定你的CA的类型。

更新1:

证书文件应该放在raw文件夹下面。比如

Resrource -> raw -> certificadopem.pem
.

代码应该是

<certificates src="@raw/certificadopem"/>
.

© www.soinside.com 2019 - 2024. All rights reserved.