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查看私钥(或公钥)?

回答:

您在密钥库中创建了一个私有(和关联的公共)密钥。要使其真正可用,可以让它由认证机构(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以了解要查找的别名,然后使用密码和参数调用该程序。在输入私钥的情况下,它以可读形式显示密钥本身以及包含公钥的自签名证书。在“受信任的证书”的情况下,它仅显示公共密钥。

以上是 keytool-查看公钥和私钥 的全部内容, 来源链接: utcz.com/qa/434562.html

回到顶部