从Android程序中以编程的方式获取URL证书信息

3

能否从Url中获取证书信息?在iOS中,有NSURLAuthenticationChallenge可以提供信息,如果url包含https

同样的方式,我们是否有任何方法通过代码获取特定url的证书信息?

2个回答

2
X509TrustManager trustManager = new X509TrustManager() {
                @Override
                public void checkClientTrusted(X509Certificate[] chain,
                        String authType) throws CertificateException {
                    for (TrustManager tm : managers) {
                        if (tm instanceof X509TrustManager) {
                            ((X509TrustManager) tm).checkClientTrusted(
                                    chain, authType);
                        }
                    }
                }

                @Override
                public void checkServerTrusted(X509Certificate[] chain,
                        String authType) throws CertificateException {
                    for (X509Certificate cert : chain) {
                        // cert gives the server Certificate Information.
                        if (cert.getIssuerX500Principal().equals(
                                trustedRoot.getIssuerX500Principal())) {
                            return;
                        }
                    }
                    for (TrustManager tm : managers) {
                        if (tm instanceof X509TrustManager) {
                            ((X509TrustManager) tm).checkServerTrusted(
                                    chain, authType);
                        }
                    }
                }

                @Override
                public X509Certificate[] getAcceptedIssuers() {
                    ArrayList<X509Certificate> issuers = new ArrayList<>();
                    for (TrustManager tm : managers) {
                        if (tm instanceof X509TrustManager) {
                            issuers.addAll(Arrays
                                    .asList(((X509TrustManager) tm)
                                            .getAcceptedIssuers()));
                        }
                    }
                    return issuers.toArray(new X509Certificate[issuers
                            .size()]);
                }

            };

在上述代码中检查此// cert gives the server Certificate Information.


0

是的,这是可能的:

步骤1:在浏览器中输入URL,在下面显示的2个选项卡上单击:

enter image description here

步骤2:打开详细选项卡

步骤3:从那里导出公钥。

enter image description here

步骤4:获取您的.cert文件。

步骤5:从.cert文件生成密钥库并将其放置在Android中。


谢谢你的回答。但是,我需要通过代码来实现。我们能通过代码来实现吗?@N5。 - Manu
你需要手动获取keystore文件,然后在Android中使用它进行SSL连接。是的,你可以通过编程方式连接到HTTPS,但需要将keystore存在于代码中,这需要手动生成。 - KOTIOS
我需要检查的URL也是动态的,不是静态的。我怎么知道用户只会使用这个URL呢?我能动态获取密钥库文件吗?@N5。 - Manu
我不确定,这是我能够实际执行的方法。 - KOTIOS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接