gpt4 book ai didi

Android webview 获取 sslError SSL_UNTRUSTED 但证书有效

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:04:07 28 4
gpt4 key购买 nike

我在我的 WebViewClient 中实现了 onReceivedSslError 方法来正确处理 webview 中的无效 https 证书:

@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
final AlertDialog.Builder builder = new AlertDialog.Builder(WebActivity.this);
String message = "SSL Certificate error.";
switch (error.getPrimaryError()) {
case SslError.SSL_UNTRUSTED:
message = "The certificate authority is not trusted.";
break;
case SslError.SSL_EXPIRED:
message = "The certificate has expired.";
break;
case SslError.SSL_IDMISMATCH:
message = "The certificate Hostname mismatch.";
break;
case SslError.SSL_NOTYETVALID:
message = "The certificate is not yet valid.";
break;
}
message += " Do you want to continue anyway?";

builder.setTitle("SSL Certificate Error");
builder.setMessage(message);
builder.setPositiveButton("continue", (dialog, which) -> handler.proceed());
builder.setNegativeButton("cancel", (dialog, which) -> handler.cancel());
final AlertDialog dialog = builder.create();
dialog.show();
}

当 webview 加载我的网页时,检测到 SslError.SSL_UNTRUSTED 错误。但是,如果我在 chrome(台式机或移动设备)中打开完全相同的 url,则证书被认为是有效且受信任的:

Google Chrome certificate popup

为什么会这样?

最佳答案

对我来说,这是我尝试访问的服务器的问题。它有一个损坏的中间证书链。这是链条断开的重定向服务器。当链断开时,webview 无法解决,因为它不知道在哪里寻找正确的证书。

Use this tool检查常见的错误配置。请务必同时检查所有重定向。

安卓不支持Authority Information Access

因此没有AIA Fetching

但是?!..它在浏览器中有效是的,它在浏览器中有效,因为所有浏览器都带有一个中间列表,以便在证书链断开时回退。

解决方案:修复服务器上的证书链。

关于Android webview 获取 sslError SSL_UNTRUSTED 但证书有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50544113/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com