在我对 keystore 和证书进行了一些研究之后,我找到了以下指南:
如果我错了请纠正我。根据我的理解(和测试):
- 在 cmd 中使用“keytool -genkeypair -alias testingkeypair -keyalg RSA -keystore keystore.jks”将生成一个 keystore.jks 文件,其中包含带有别名“domain”的私钥和公钥对
- 然后使用 keystore.jks 文件签署/导出证书
- keystore.jks文件也可以用来存储多个证书
我不明白的是,在我将任何证书导入 keystore.jks 文件之前,当我尝试查看里面的内容时(使用 keytool -list -v -keystore keystore.jks),似乎是一个证书已经在里面。它是该 keystore 的默认证书吗?我认为“keytool -genkeypair”只会生成带有 key 对的 keystore ?
keytool -list -v -keystore keystore.jks 的结果:
Keystore type: JKS Keystore provider: SUN
Your keystore contains 1 entry
Alias name: testingkeypair Creation date: Jan 11, 2016 Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate: Owner:CN=testing, OU=testing, O=testing, L=testing, ST=testing, C=testing Issuer: CN=testing, OU=testing, O=testing, L=testing, ST=testing, C=testing Serial number: 650d8951 Valid from: Mon Jan 11 14:43:52 SGT 2016 until: Sun Apr 10 14:43:52 SGT 2016 Certificate fingerprints: MD5: F0:74:9F:27:F0:08:AB:A0:BE:B2:A0:F2:94:45:94:90 SHA1: 87:0C:E2:E2:06:A6:52:4E:0C:40:E9:B0:DE:75:A7:8C:CC:01:45:57 SHA256: D1:B2:63:F0:85:A7:06:2E:7D:2B:E1:1E:91:9E:62:56:22:E7:61:36:E6: 23:8A:6F:21:EF:2B:79:0D:12:B8:38 Signature algorithm name: SHA256withRSA Version: 3
最佳答案
经过更多的研究,我找到了我想要的答案。它在 keytool 的官方 javadoc 中。 http://docs.oracle.com/javase/1.5.0/docs/tooldocs/solaris/keytool.html#genkeyCmd
似乎无论何时使用 -genkey,都会生成一对公钥/私钥对,并且公钥包裹在证书(自签名)中。因此,当我在 -genkey 命令后立即使用“keytool -list -v”命令时看到的证书是公钥的证书。
关于java - keystore 和证书概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34716674/