相关疑难解决方法(0)

CertPathValidatorException:找不到证书路径的信任锚 - Retrofit Android

我正在创建一个https用于与服务器通信的android应用程序.我正在使用retrofitOkHttp提出请求.这些适用于标准http请求.以下是我遵循的步骤.

步骤1: 使用该命令从服务器获取cert文件

echo -n | openssl s_client -connect api.****.tk:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > gtux.cert
Run Code Online (Sandbox Code Playgroud)

步骤2: 使用以下命令将证书转换为BKS格式

keytool -importcert -v -trustcacerts -file "gtux.cert" -alias imeto_alias -keystore "my_keystore.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk16-146.jar" -storetype BKS
Run Code Online (Sandbox Code Playgroud)

它问我密码并且文件已成功创建.

第3步:

创建一个OkHttpClient并使用它来发出https请求

public class MySSLTrust {
public static OkHttpClient trustcert(Context context){
    OkHttpClient okHttpClient = new OkHttpClient();
    try {
        KeyStore ksTrust = KeyStore.getInstance("BKS");
        InputStream instream = context.getResources().openRawResource(R.raw.my_keystore);
        ksTrust.load(instream, "secret".toCharArray());
        // TrustManager decides which certificate authorities to …
Run Code Online (Sandbox Code Playgroud)

ssl android retrofit okhttp

54
推荐指数
5
解决办法
9万
查看次数

Android Emulator"链接验证失败"将开发人员计算机与自签名证书连接起来

我有一个android工作室项目,调用基于Web的api服务.当服务代码在dev,qa,prod等中时,没有证书问题,但是当试图访问web api开发人员框以测试新功能/错误修复/等时,我得到:

因错误而无法回复:

javax.net.ssl.SSLHandshakeException:链验证失败

在com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:361)

我有从服务开发者机器导出的自签名证书,没有私钥DER编码.我掉到了模拟器上并"安装"但这没有用.

我使用了相同的证书并复制到模拟的SD卡.然后从模拟器中的安全设置安装.结果相同.链验证失败.

现在我的安全/证书知识非常基础.我认为错误实际上描述了这个问题.自签名证书中没有链条......但我可能错了.

无论如何,我该如何解决这个问题?

我希望能够运行我的android代码并点击开发人员框进行测试/调试等.

我已经阅读了这样的帖子,只是为了拥有企业环境,我正在阻止开放SSL等网站.

https://android.stackexchange.com/questions/61540/self-signed-certificate-install-claims-success-but-android-acts-as-if-cert-isn

我通过WebView访问该服务.

任何帮助,指针,想法将不胜感激.

TIA

ssl android ssl-certificate android-emulator

28
推荐指数
4
解决办法
1万
查看次数

带有客户端证书的android webview

我试了好几天使用Web视图并在应用程序中嵌入了客户端证书,但在我看来,android sdk没有提供任何方法来执行此操作,是否有回调来拦截服务器发送的质询?有没有办法将webview与客户端证书一起使用并发出https请求?

ssl client android certificate webview

19
推荐指数
4
解决办法
4万
查看次数

WebView图像未显示HTTPS

我的应用程序打开一个Web视图来显示HTML页面,该页面由HTTPS托管,其中包含一个图像(来自http的图像).在某些设备上,图像没有显示,但对于所有其他设备,它的工作正常.我检查了Nexus,三星s6/s4,Moto G2等多种设备.仅在三星S4/S6上,nexus图像未显示.但对于所有其他设备,它的工作正常.即使我尝试使用WI-FI,数据载体和多个操作系统版本,但没有运气.

请帮忙解决这个问题.

一些观察: -

1)在每台设备上我都收到相同的警告: - [已阻止]' page url ' 页面是通过HTTPS加载的,但是显示来自' image source '的不安全内容:此内容也应该通过HTTPS加载.

2)如果我在网络浏览器中打开相同的页面,在所有设备上正常工作.

我的守则

mWebView = (WebView) findViewById(R.id.m_web_view);
    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    mainUrl = bean.getUrl();
    mWebView.loadUrl("javascript:window.location.reload( true )");
    mWebView.loadUrl(mainUrl);
    mWebView.setWebViewClient(new myWebClient());



    private class myWebClient extends WebViewClient {

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
    //some code
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        //some code
    }

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


}
Run Code Online (Sandbox Code Playgroud)

android android-webview

16
推荐指数
1
解决办法
1万
查看次数

处理Android Webview中的证书错误并清除证书参数

我正在尝试找到一种在Android Webview中处理SSL证书错误的正确方法.我的目标是提供一种加载具有SSL证书错误的页面的方法,但是当用户尝试加载带有证书错误的URL时,让用户选择在警告他安全性之后加载该页面.

我在线程中找到的最接近的解决方案建议覆盖WebViewClient,如下所示:

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedSslError(final WebView view, final SslErrorHandler handler, final SslError error) {
        handler.proceed();
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,这在没有用户同意的情况下基本上禁用了WebView中的SSL.

这里参考的是我找到解决方案的线程:

Android WebView SSL'安全警告'

Android上的Web View是否支持SSL?

Android WebView未加载HTTPS URL

带有客户端证书的android webview

在Android中使用WIFI时,Web视图在加载URL后显示空白/白页

无法在Android网页视图上加载特定网页

WebView显示某些链接的空白视图

Android WebView阻止从https重定向到http

忽略webview中的ssl证书请求

我继续实施了一个略有不同的版本,提示用户:

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedSslError(final WebView view, final SslErrorHandler handler, final SslError error) {
        //Showing a first confirmation dialog
        AndroidUtils.showYesNoDialog(
            //First confirmation message
            "WARNING - THIS PAGE IS NOT SECURE! Are you sure you want …
Run Code Online (Sandbox Code Playgroud)

ssl https android android-webview android-security

16
推荐指数
2
解决办法
1万
查看次数

Webview不会加载URL,但浏览器会加载URL

因此,从我的第一个屏幕开始,我将URL传递给要在webview中启动的活动.但是当webview启动时,它会显示" web page not available - The web page at URL might be temporarily down or it may have moved permanently to a new web address"

但是当我在Android浏览器中启动相同的URL时,它工作正常.这是我在webview中启动该URL的代码

    super.onCreate(savedInstanceState);

    String url = "";
    url = getIntent().getStringExtra("loginURL");
    WebView urlWebView = new WebView(this);
    urlWebView.setWebViewClient(new WebViewClient());

    urlWebView.getSettings().setJavaScriptEnabled(true);
    urlWebView.loadUrl(url);
    this.setContentView(urlWebView);
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

android webview

6
推荐指数
1
解决办法
1万
查看次数