如何在OkHttp中接受传入的自签名SSL证书?

时间:2019-06-21 23:54:07

标签: okhttp okhttp3 self-signed-certificate

我有这个要求,其中应用程序是尘土飞扬的,所以端点是按公司分配的,没有集中的东西。问题是该应用程序需要允许自签名证书。

很明显,我不能仅在应用程序中对证书进行硬编码,并使用可用的摘要片段来完成此操作。

因此,是否有办法解决SSL不受信任的问题,然后向用户显示“此证书不受信任?等等。接受吗?”。

TLDR; 如何在OkHttp中获取有问题的证书内容,然后将其保存在sslSocketFactory子类中?

1 个答案:

答案 0 :(得分:0)

您可以修改以下示例代码

void initializeStickerView() {
            mDensity = getResources().getDisplayMetrics().density;
            actionBarHeight = (int) (110 * mDensity);
            bottombarHeight = (int) (60 * mDensity);
            viewWidth = getResources().getDisplayMetrics().widthPixels;
            viewHeight = getResources().getDisplayMetrics().heightPixels - actionBarHeight - bottombarHeight;
            viewRatio = (double) viewHeight / (double) viewWidth;
            bmRatio = (double) (1920) / (double) (1080);
            if (bmRatio < viewRatio) {
                bmWidth = viewWidth;
                bmHeight = (int) (((double) viewWidth) * ((double) (1920) / (double) (1080)));
            } else {
                bmHeight = viewHeight;
                bmWidth = (int) (((double) viewHeight) * ((double) (1080) / (double) (1920)));
            }
            final RelativeLayout.LayoutParams lparams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            lparams.addRule(RelativeLayout.CENTER_IN_PARENT);
            lparams.height = bmHeight;
            lparams.width = bmWidth;
            stickerView.setLayoutParams(lparams);
            stickerView.setBackgroundColor(Color.WHITE);
            stickerView.setLocked(false);
            stickerView.setConstrained(true);
        }

不需要将其添加到密钥库中,您应该可以在运行密钥库验证之前接受它。 n.b.该示例可能应该回到默认逻辑,但它应该使您入门。