为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查密钥库文件中的证书名称和别名?

/ 猿问

如何检查密钥库文件中的证书名称和别名?

胡说叔叔 2019-11-21 14:16:16

我有一堆.keystore文件,需要找到一个具有特定CN和别名的文件。有没有办法使用keytool,jarsigner或其他工具来做到这一点?我找到了一种检查特定密钥库是否用于签署特定apk的方法,但是我还需要在每个文件中获取别名和证书名称。



查看完整描述

3 回答

?
largeQ

您可以运行以下命令来列出密钥库文件的内容(和别名):


keytool -v -list -keystore .keystore

如果要查找特定的别名,也可以在命令中指定它:


keytool -list -keystore .keystore -alias foo

如果找不到别名,它将显示异常:


keytool错误:java.lang.Exception:别名不存在


查看完整回答
反对 2019-11-21
?
慕哥9229398

您可以从Java代码运行。


try {


        File file = new File(keystore location);

        InputStream is = new FileInputStream(file);

        KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());

        String password = "password";

        keystore.load(is, password.toCharArray());



        Enumeration<String> enumeration = keystore.aliases();

        while(enumeration.hasMoreElements()) {

            String alias = enumeration.nextElement();

            System.out.println("alias name: " + alias);

            Certificate certificate = keystore.getCertificate(alias);

            System.out.println(certificate.toString());


        }


    } catch (java.security.cert.CertificateException e) {

        e.printStackTrace();

    } catch (NoSuchAlgorithmException e) {

        e.printStackTrace();

    } catch (FileNotFoundException e) {

        e.printStackTrace();

    } catch (KeyStoreException e) {

        e.printStackTrace();

    } catch (IOException e) {

        e.printStackTrace();

    }finally {

        if(null != is)

            try {

                is.close();

            } catch (IOException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

    }

证书类包含有关密钥库的所有信息。


更新-获取私钥


Key key = keyStore.getKey(alias, password.toCharArray());

String encodedKey = new Base64Encoder().encode(key.getEncoded());

System.out.println("key ? " + encodedKey);


查看完整回答
反对 2019-11-21

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信