Java keytool-请参阅公钥和私钥
我以编程方式创建了jks类型的Java密钥库(即默认类型)。Java keytool-请参阅公钥和私钥,java,security,keystore,digital-certificate,keytool,Java,Security,Keystore,Digital Certificate,Keytool,我以编程方式创建了jks类型的Java密钥库(即默认类型)。 它最初是空的,所以我创建了一个DSA证书 keytool -genkey -alias myCert -v -keystore trivial.keystore 如何查看公钥和私钥? 即,是否有打印证书私钥的命令? 我只能找到keytool-certreq,据我所知,它打印整个证书: -----BEGIN NEW CERTIFICATE REQUEST----- MIICaTCCAicCAQAwZTELMAkGA1UEBhMCR1I
它最初是空的,所以我创建了一个DSA证书
keytool -genkey -alias myCert -v -keystore trivial.keystore
如何查看公钥和私钥?即,是否有打印证书私钥的命令?
我只能找到
keytool-certreq
,据我所知,它打印整个证书:
-----BEGIN NEW CERTIFICATE REQUEST-----
MIICaTCCAicCAQAwZTELMAkGA1UEBhMCR1IxDzANBgNVBAgTBkdyZWVjZTEPMA0GA1UEBxMGQXRo
BQADLwAwLAIUQZbY/3Qq0G26fsBbWiHMbuVd3VICFE+gwtUauYiRbHh0caAtRj3qRTwl
-----END NEW CERTIFICATE REQUEST-----
我想这就是全部证书。如何通过keytool查看私钥(或公钥) 不,你不能。您可以从代码中访问私钥,但不能使用keytool将其导出。
如果需要导出私钥,请使用 另一个选项:可以生成PKCS12格式的密钥库。然后,您可以将其导入浏览器,然后导出私钥。您在密钥库中创建了私钥(以及关联的公钥)。为了使其真正可用,您可以让认证机构(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-keystoremystore
以了解要查找的别名,然后使用密码和参数调用此程序。对于私钥条目,它以可读形式显示密钥本身以及包含公钥的自签名证书。对于“可信证书”,它只显示公钥。()是一个非常方便的GUI工具,用于管理密钥库。除此之外,它还可以选择导出私钥及其相关证书
共享公钥的常用方法是共享密钥对的证书(其中包含公钥)
或
如中所述
keytool -help
你可以用。
好的,所以查看私钥不是故意的。公钥呢?有显示公钥的命令吗?我刚刚添加了一个简单的java类来查看密钥库。(这有点复杂,我甚至自己尝试格式化密钥……直到我想到尝试
toString()
方法。)@MircoWidmer–谢谢你的帮助。我不知道为什么当你只是在修改一个打字错误时,人们会拒绝它(上面提到的理由肯定是无效的)。我现在修复了它。这很酷,但我无法使用jceks,我知道我可以转换它,只是想知道是否可能。该命令只列出公钥。私钥无法通过keytoolTo访问以获取PEM格式的私钥:openssl pkcs12-in-nocerts-nodes
keytool -list -rfc -alias myCert -storepass 123456 -keystore file.jks
keytool -help