密钥库和证书概念

时间:2016-01-11 08:06:09

标签: java ssl

在我对密钥库和证书进行了一些研究之后,我找到了以下指南:

  1. Understanding keystore, certificates and alias
  2. Java Keytool Essentials: Working with Java Keystores
  3. 如果我错了,请纠正我。根据我的理解(和测试):

    1. 在cmd中使用“keytool -genkeypair -alias testingkeypair -keyalg RSA -keystore keystore.jks”将生成一个keystore.jks文件,其中包含带有别名“domain”的私钥和公钥对
    2. 然后使用keystore.jks文件签署/导出证书
    3. keystore.jks文件也可用于存储多个证书
    4. 我不明白的是,在我将任何证书导入keystore.jks文件之前,当我尝试查看内部的内容时(使用keytool -list -v -keystore keystore.jks),似乎已经是里面的证明。它是该密钥库的默认证书吗?我认为“keytool -genkeypair”只会生成一个带有密钥对的密钥库?

      keytool -list -v -keystore keystore.jks的结果:

        

      密钥库类型:JKS密钥库提供商:SUN

           

      您的密钥库包含1个条目

           

      别名:testingkeypair创建日期:2016年1月11日输入类型:   PrivateKeyEntry证书链长:1证书:   所有者:CN =测试,OU =测试,O =测试,L =测试,ST =测试,   C =测试发行人:CN =测试,OU =测试,O =测试,L =测试,   ST =测试,C =测试序列号:650d8951有效期:1月11日星期一   2016年4月14日14:52直到:2016年4月10日星期日14:43:52 SGT 2016证书   指纹:            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            签名算法名称:SHA256withRSA            版本:3

2 个答案:

答案 0 :(得分:2)

经过一些研究,我找到了我想要的答案。它是关键工具的官方javadoc。 http://docs.oracle.com/javase/1.5.0/docs/tooldocs/solaris/keytool.html#genkeyCmd

似乎每当使用-genkey时,都会生成一对公钥/私钥对,并且公钥会围绕证书(自签名)。因此,当我使用“keytool -list -v”命令直接在-genkey命令之后看到的证书是公钥的证书。

答案 1 :(得分:1)

第二个链接中给出的命令就是答案。 keytool -certreq \         -alias域名         -file domain.csr \         -keystore keystore.jks

您需要生成证书请求,该请求将生成证书签名请求.csr文件。 .csr文件将包含您的证书详细信息以及公钥,.jks文件将包含您的私钥。您需要像Symntac一样将.csr文件发送到CA以使其签名。 CA将签名并为您提供.cer或.crt(签名证书)。您需要导入到.jks(java密钥库)。 keytool -importcert \         -trustcacerts -file domain.crt \         -alias域名         -keystore keystore.jks

.jks就像一个存储证书和密钥的数据库。

相关问题