7

我正在使用 Crosswalk XWalkView 作为我的应用程序的 webview,现在我正在加载一些具有有效证书并且在 Android 版本 < 7 中运行良好的网站。

但在 Android 7.0 及更高版本中,我收到了这条 toast 消息REQUEST WAS DENIED FOR SECURITY

和这个日志

06-12 17:46:46.024 22518-22731/? I/X509Util: Failed to validate the certificate chain, error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

我读过一些类似的问题,但是发布的解决方案是在 Cordova 中(请参阅this)。我正在使用本机android,我想知道我是否可以在我的端(本机)做到这一点。

从链接引用

我通过将以下代码段的最后 3 行添加到 config.xml 解决了这个问题:

<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
<allow-navigation href="data:*" />

谢谢!

基本上我想做的是像 Cordova 那样拥有一些白名单,但我不知道如何使用 Native Android 和 Crosswalk 来实现这一点。首先,我不知道原生android中是否有config.xml(在cordova中有),现在我真的需要知道如何在我的项目中实现它。

4

1 回答 1

2

我可以通过遵循我信任附加证书的android 网络安全配置中的步骤来解决此问题。

基本上,我第一次尝试它时,我在 network_security_config.xml 中提供了错误的 SSL 证书(我认为它是网站本身,但导致错误的是网站中加载的 Javascript 文件的主机)。

website_ca 是 SSL 证书文件

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors>
            <certificates src="@raw/website_ca"/>
            <certificates src="system"/>
        </trust-anchors>
    </base-config>
</network-security-config>

它现在工作正常。

于 2017-08-11T04:25:14.280 回答