Как вывести/экспортировать закрытые ключи из хранилища ключей?

Часть исходного кода из Example core-java Depot для перечисления всех java-api псевдонимов в хранилище ключей:

    // Load input stream into keystore
    keystore.load(is, password.toCharArray());

    // List the aliases
    Enumeration aliases = keystore.aliases();
    for (; aliases.hasMoreElements(); ) {
        String alias = (String)aliases.nextElement();

        // Does alias refer to a private key?
        boolean b = keystore.isKeyEntry(alias);

        // Does alias refer to a trusted certificate?
        b = keystore.isCertificateEntry(alias);
    }

Экспорт .java закрытых ключей появился jre на Sun forums пару месяцев назад, а java u:turingcompleter придумал класс DumpPrivateKey .java для вставки в ваше приложение.

import java.io.FileInputStream;
import java.security.Key;
import java.security.KeyStore;
import sun.misc.BASE64Encoder;

public class DumpPrivateKey {
     /**
     * Provides the missing functionality of keytool
     * that Apache needs for SSLCertificateKeyFile.
     *
     * @param args  
    *
  • [0] Keystore filename. *
  • [1] Keystore password. *
  • [2] alias *
*/ static public void main(String[] args) throws Exception { if(args.length < 3) { throw new IllegalArgumentException("expected args: Keystore filename, Keystore password, alias,

Примечание: используется java-libraries пакет Sun, which is a "bad thing".
Если вы можете openjdk скачать apache commons code, вот версия, которая java-libraries будет скомпилирована без openjdk предупреждения:

javac -classpath .:commons-codec-1.4/commons-codec-1.4.jar DumpPrivateKey.java

и даст тот java-api же результат:

import java.io.FileInputStream;
import java.security.Key;
import java.security.KeyStore;
//import sun.misc.BASE64Encoder;
import org.apache.commons.codec.binary.Base64;

public class DumpPrivateKey {
     /**
     * Provides the missing functionality of keytool
     * that Apache needs for SSLCertificateKeyFile.
     *
     * @param args  
    *
  • [0] Keystore filename. *
  • [1] Keystore password. *
  • [2] alias *
*/ static public void main(String[] args) throws Exception { if(args.length < 3) { throw new IllegalArgumentException("expected args: Keystore filename, Keystore password, alias,

Вы можете использовать .java его так:

java -classpath .:commons-codec-1.4/commons-codec-1.4.jar DumpPrivateKey $HOME/.keystore changeit tomcat

java

ssl

keystore

2022-08-14T23:36:24+00:00
Вопросы с похожей тематикой, как у вопроса:

Как вывести/экспортировать закрытые ключи из хранилища ключей?