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


当前回答

在Windows上:

Keytool -v -list -keystore my_keystore | findstr my_string

参考:

CMD搜索目录以查找文件中的字符串

其他回答

KeyStore Explorer开源可视化工具,用于管理密钥库。

在Windows上:

Keytool -v -list -keystore my_keystore | findstr my_string

参考:

CMD搜索目录以查找文件中的字符串

您可以从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);

@prateek希望这就是你想要的!

我们可以使用简单的命令从Certs获取证书列表,并在结果输出中搜索您的别名。

keytool -list -keystore C:/swdtools/jdk1.7.0_67/jre/lib/security/cacerts

cmd:

keytool -list -keystore 'keystoreName'

然后按回车键 然后CMD将提示您输入密钥库密码

CMD在输入时不会在屏幕上显示密码 所以只要输入正确的密码——小心点——然后再按回车。

或者你可以用:

keytool -list -keystore 'keystoreName' -storepass 'type your keystore passwd'

对于Keys的完整信息,只需添加-v:

keytool -v -list -keystore 'keystoreName' -storepass 'type your keystore passwd'