keytool - посмотреть открытый и закрытый ключи - PullRequest
13 голосов
/ 05 февраля 2011

Я создал хранилище ключей Java программно типа jks (то есть тип по умолчанию).
Изначально он пуст, поэтому я создал сертификат DSA.

keytool -genkey -alias myCert -v -keystore trivial.keystore

Как посмотреть открытый и закрытый ключи?
То есть есть команда, которая печатает закрытый ключ моего сертификата?
Я мог только найти keytool -certreq, который в моем понимании печатает сертификат в целом:

-----BEGIN NEW CERTIFICATE REQUEST-----
MIICaTCCAicCAQAwZTELMAkGA1UEBhMCR1IxDzANBgNVBAgTBkdyZWVjZTEPMA0GA1UEBxMGQXRo
BQADLwAwLAIUQZbY/3Qq0G26fsBbWiHMbuVd3VICFE+gwtUauYiRbHh0caAtRj3qRTwl
-----END NEW CERTIFICATE REQUEST-----

Полагаю, это весь сертификат. Как я могу увидеть закрытый (или открытый ключ) через keytool?

Ответы [ 5 ]

9 голосов
/ 05 февраля 2011

Нет, вы не можете.
Вы можете получить доступ к закрытому ключу из кода, но вы не можете экспортировать его, используя keytool.
Используйте OpenSSL , если вам нужно экспортировать закрытый ключ.

Другой вариант: вы можете создать хранилище ключей в формате PKCS12.Затем вы можете импортировать его в браузер, а затем экспортировать закрытый ключ.

5 голосов
/ 05 февраля 2011

Вы создали закрытый (и связанный с ним открытый ключ) в вашем хранилище ключей.Для того, чтобы он был действительно применим, вы можете подписать его в сертификационном агентстве (CA) - это команда -certreq (вы отправляете выходные данные в это сертификационное агентство вместе с другой информацией и небольшим количеством денег, иони отправляют обратно сертификат, который затем можно импортировать в хранилище ключей.)

Просмотр закрытого ключа не предназначен ... это обычно не требуется, поскольку вы используете хранилище ключей в своей Java-программе,и он знает, как его использовать.


Редактировать: Поскольку вы хотите посмотреть на свое хранилище ключей, вот быстрая Java-программа, которая делает это:

import java.io.*;
import java.security.*;
import java.security.cert.Certificate;

public class KeyPrinter {

    /**
     * to be invoked with these parameters:
     * 
     * [0]:  keystore-password
     * [1]:  filename
     * [2]:  alias
     * [3]:  entry-Password (if necessary)
     */
    public static void main(String[] params)
        throws IOException, GeneralSecurityException
    {
        char[] storePass = params[0].toCharArray();
        String fileName = params[1];
        String alias = params[2];
        KeyStore.ProtectionParameter entryPass;
        if(params.length > 3) {
        entryPass=new KeyStore.PasswordProtection(params[3].toCharArray());
        } else {
            entryPass = null;
        }

        KeyStore store = KeyStore.getInstance("JKS");
        InputStream input = new FileInputStream(fileName);
        store.load(input, storePass);

        KeyStore.Entry entry = store.getEntry(alias, entryPass);
        System.out.println(entry);

    }
}

Первый вызов keytool -list -keystore myStore чтобы узнать, какой псевдоним искать, затем вызовите эту программу с паролями и параметрами.В случае записи с закрытым ключом он показывает сам ключ и дополнительно самозаверяющий сертификат, который содержит открытый ключ, в читаемой форме.В случае «доверенного сертификата» он показывает только открытый ключ.

3 голосов
/ 06 февраля 2011

( Portecle ) - очень удобный инструмент с графическим интерфейсом для управления хранилищами ключей.И среди прочего у него есть возможность экспортировать закрытый ключ и связанный с ним сертификат.

Обычный способ поделиться вашим открытым ключом - это поделиться сертификатом для вашей пары ключей (он содержит ваш открытый ключ внутри)

2 голосов
/ 26 августа 2017
keytool -list -v -alias myCert -storepass 123456 -keystore file.jks

или

keytool -list -rfc -alias myCert -storepass 123456 -keystore file.jks

, как указано в

keytool -help
0 голосов
/ 17 января 2019

Вы можете использовать keystore-explorer . enter image description here

...