web-dev-qa-db-ja.com

keytool-公開鍵と秘密鍵を参照してください

タイプjks(つまりデフォルトタイプ)のJavaキーストアをプログラムで作成しました。
最初は空なので、DSA証明書を作成しました。

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

公開鍵と秘密鍵を確認するにはどうすればよいですか?
つまり証明書の秘密鍵を出力するコマンドはありますか?
私が理解したところ、証明書全体を印刷するkeytool -certreqしか見つかりませんでした。

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

これが証明書全体だと思います。 keytoolを介して秘密(または公開鍵)を表示するにはどうすればよいですか?

15
Cratylus

キーストアに秘密(および関連する公開)鍵を作成しました。本当に使えるようにするには、認証機関(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検索するエイリアスを確認してから、パスワードとパラメータを使用してこのプログラムを呼び出します。秘密鍵エントリの場合は、鍵自体と、公開鍵を含む自己署名証明書が読み取り可能な形式で表示されます。 「信頼できる証明書」の場合は、公開鍵のみが表示されます。

5
Paŭlo Ebermann

いいえ、あなたがすることはできません。
コードから秘密鍵にアクセスできますが、keytoolを使用して公開することはできません。
秘密鍵をエクスポートする必要がある場合は、 OpenSSL を使用します。

別のオプション:PKCS12形式でキーストアを生成できます。次に、それをブラウザにインポートしてから、秘密鍵をエクスポートできます。

9
Tarlog
keytool -list -v -alias myCert -storepass 123456 -keystore file.jks

または

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

に記載されているように

keytool -help
4
user1133275

Portecle )は、キーストアを管理するための非常に便利なGUIツールです。また、特に、秘密鍵とそれに関連する証明書をエクスポートするオプションがあります。

公開鍵を共有する一般的な方法は、鍵ペアの証明書を共有することです(公開鍵が内部に含まれています)

3
dmitryme

keystore-Explorer を使用できます。 enter image description here

0
deathangel908