如何从自签名证书的密钥库中导出私钥

jep*_*rro 23 ssl tomcat certificate keystore self-signed

我刚刚在运行tomcat 6的linux机器上创建了一个自签名证书.

我创建了这样的密钥,有效期为10年:

keytool -genkey -alias tomcatorange -keyalg RSA -validity 3650
Run Code Online (Sandbox Code Playgroud)

并将密钥库复制到tomcat中的文件夹中,并更新server.xml以指向密钥库.

现在我的网络管理员要求公钥和私钥(对于我们的负载均衡器)

我可以使用以下方法生成公钥:

openssl s_client -connect mydomain.com:8443
Run Code Online (Sandbox Code Playgroud)

但是如何导出/检索私钥?

Jam*_*olk 52

这有点棘手.首先,您可以使用keytool将私钥置于PKCS12格式,这种格式比Java的各种密钥库格式更便携/兼容.下面是一个在Java密钥库中使用别名"mykey"的私钥并将其复制到名为的PKCS12文件的示例myp12file.p12.[请注意,在大多数屏幕上,此命令会超出框的右侧:您需要向右滚动才能看到所有内容]

keytool -v -importkeystore -srckeystore .keystore -srcalias mykey -destkeystore myp12file.p12 -deststoretype PKCS12
Enter destination keystore password:  
Re-enter new password: 
Enter source keystore password:  
[Storing myp12file.p12]
Run Code Online (Sandbox Code Playgroud)

现在该文件myp12file.p12包含PKCS12格式的私钥,可以由许多软件包直接使用或使用该openssl pkcs12命令进一步处理.例如,

openssl pkcs12 -in myp12file.p12 -nocerts -nodes
Enter Import Password:
MAC verified OK
Bag Attributes
    friendlyName: mykey
    localKeyID: 54 69 6D 65 20 31 32 37 31 32 37 38 35 37 36 32 35 37 
Key Attributes: <No Attributes>
-----BEGIN RSA PRIVATE KEY-----
MIIC...
.
.
.
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

打印出未加密的私钥.

请注意,这是一个私钥,有责任了解从Java密钥库中删除它并移动它的安全隐患.

  • 对于每个人都出现"错误输出密钥和证书"错误:尝试使用相同的源和目标密码. (7认同)
  • 如果其他人遇到与@ user265330相同的问题,请尝试在答案中的代码框上向右滚动并包含-deststoretype参数.不是我这样做,或任何事情...... (3认同)

小智 6

使用Keystore Explorer gui - http://keystore-explorer.sourceforge.net/ - 允许您以各种格式从.jks中提取私钥.