当前位置:   MFC > 正文

Android上的Web View是否支持SSL?

android,webview,webkit,html,go,安全,服务器,rust,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

WebView对android 的控制,是否支持SSL?

我正在尝试加载一个使用受信任的ssl证书的网页,但WebView它只是白色.

有什么建议?



1> chris..:

不是专家,只是我在网上找到的东西.根据我的理解,WebView确实支持ssl,但是,空白屏幕表明WebView不相信证书是有效的.这可能发生在自签名的证书或未在android中设置的root身份验证(完全有效的证书不验证).无论如何,如果您使用froyo或更好,您可以尝试以下方式:

import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.SslErrorHandler;
import android.net.http.SslError;

...

engine = (WebView) findViewById(R.id.my_webview);
engine.setWebViewClient(new WebViewClient() {

    @Override
    public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) {
        handler.proceed();
    }
});


要警告在生产应用中实际使用此功能的任何人,这将允许对您的应用进行MitM攻击.更多信息:http://stanford.edu/~pcm2d/blog/ssl.html
这篇文章帮了我很多忙!请注意,您需要开发至少2.2并使用以下包括Ssl的东西:import android.webkit.*; import android.net.http.*;
感谢您的回答,Google必须检查Play上所有具有完全相同实现的应用,并向开发人员发送警告电子邮件:)

2> Anant Shah..:

要根据更新的安全策略正确处理SSL证书验证,请根据服务器提供的证书更改代码以调用SslErrorHandler.proceed(),否则调用SslErrorHandler.cancel().

例如,我添加了一个警告对话框,以便用户确认并且Google似乎不再显示警告.

    @Override
    public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
    final AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
    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", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            handler.proceed();
        }
    });
    builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            handler.cancel();
        }
    });
    final AlertDialog dialog = builder.create();
    dialog.show();
}

更改后,它不会显示警告.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/MFC/detail/22361
推荐阅读
相关标签
  

闽ICP备14008679号