小工具知识网

当前位置: 首页 > 行业知识 > Java——Keytool工具详解

行业知识

Java——Keytool工具详解

2026-10-25 18:55:17 来源:互联网转载

目录

  • Keytool
    • 1、-genkeypair(生成密钥对/创建数字证书)
    • 2、-list(列出密钥库中的条目)
    • 3、-storepasswd(更改密钥库的存储口令)
    • 4、-changealias(更改条目的别名)
    • 5、-delete(删除条目)
    • 6、-exportcert(导出证书)
    • 7、-printcert(打印证书内容)
    • 8、-certreq(生成证书请求)
    • 9、-printcertreq(打印证书请求的内容)
    • 10、-gencert(根据证书请求生成证书)
    • 11、-importcert(导入证书或证书链)

      Keytool

      keytool为java原生自带,安装java后不需要再进行安装,作为密钥和证书管理工具,方便用户能够管理自己的公钥/私钥及证书,用于认证服务。

      ()
      • -certreq:生成证书请求
      • -changealias:更改条目的别名
      • -delete:删除条目
      • -exportcert:导出证书
      • -genkeypair:生成密钥对
      • -genseckey:生成密钥
      • -gencert:根据证书请求生成证书
      • -importcert:导入证书或证书链
      • -importpass:导入口令
      • -importkeystore:从其他密钥库导入一个或所有条目
      • -keypasswd:更改条目的密钥口令
      • -list:列出密钥库中的条目
      • -printcert:打印证书内容
      • -printcertreq:打印证书请求的内容
      • -printcrl:打印 CRL 文件的内容
      • -storepasswd:更改密钥库的存储口令

        1、-genkeypair(生成密钥对/创建数字证书)

        可用选项:

         -alias                   要处理的条目的别名 -keyalg                 密钥算法名称 -keysize               密钥位大小 -sigalg                 签名算法名称 -destalias           目标别名 -dname                   唯一判别名 -startdate           证书有效期开始日期/时间 -ext                     X.509 扩展 -validity              有效天数 -keypass                   密钥口令 -keystore             密钥库名称 -storepass                 密钥库口令 -storetype           密钥库类型 -providername     提供方名称 -providerclass   提供方类名 -providerarg               提供方参数 -providerpath         提供方类路径 -v                              详细输出 -protected                      通过受保护的机制的口令

        KeyTool工具支持RSA和DSA两种算法,且DSA算法为默认算法。

        ()

        示例:

        keytool -genkeypair -keyalg RSA -keysize 2048 -sigalg SHA1withRSA -validity 36000 -alias acton -keystore acton.keystore -dname "CN=acton, OU=acton, O=acton, L=BJ, ST=BJ, C=CN" -storepass 123456
        • keyalg:密钥算法为RSA
        • keysize:密钥长度为2048,默认为1024
        • sigalg:数字签名算法为SHA1withRSA
        • validity:证书有效期为36000天
        • -alias:别名为acton
        • keystore:密钥库存储位置acton.keystore
        • dname:指定用户信息
          • CN:姓名
          • OU:组织单位名
          • O:组织名
          • L:城市或区域名
          • ST:州或省份名
          • C:国家代码
          • storepass:密钥库密码123456

            此时已经生成了一个没有经过认证的数字证书,和一个JKS格式的密钥库。

            JKS为Java专用格式,可以使用如下命令转换为标准格式PKCS12

            keytool -importkeystore -srckeystore acton.keystore -destkeystore acton.keystore -deststoretype pkcs12

            2、-list(列出密钥库中的条目)

            可用选项:

             -rfc                            以 RFC 样式输出 -alias                   要处理的条目的别名 -keystore             密钥库名称 -storepass                 密钥库口令 -storetype           密钥库类型 -providername     提供方名称 -providerclass   提供方类名 -providerarg               提供方参数 -providerpath         提供方类路径 -v                              详细输出 -protected                      通过受保护的机制的口令

            示例:查看所有条目

            keytool -list -keystore acton.keystore -storepass 123456
            密钥库类型: jks密钥库提供方: SUN您的密钥库包含 1 个条目acton, 2023-11-27, PrivateKeyEntry,证书指纹 (SHA1): 03:CD:A0:1C:1F:E2:50:04:1B:C8:D4:9F:35:97:0D:20:D6:E3:21:90

            示例:查看指定别名

            keytool -list -keystore acton.keystore -storepass 123456 -alias acton
            acton, 2023-11-27, PrivateKeyEntry,证书指纹 (SHA1): 03:CD:A0:1C:1F:E2:50:04:1B:C8:D4:9F:35:97:0D:20:D6:E3:21:90

            示例:以RFC样式输出

            keytool -list -keystore acton.keystore -storepass 123456 -alias acton -rfc
            别名: acton创建日期: 2023-11-27条目类型: PrivateKeyEntry证书链长度: 1证书[1]:-----BEGIN CERTIFICATE-----MIIDTzCCAjegAwIBAgIEOLT4rDANBgkqhkiG9w0BAQUFADBXMQswCQYDVQQGEwJDTjELMAkGA1UECBMCQkoxCzAJBgNVBAcTAkJKMQ4wDAYDVQQKEwVhY3RvbjEOMAwGA1UECxMFYWN0b24xDjAMBgNVBAMTBWFjdG9uMCAXDTIzMTEyNzA4NTMzN1oYDzIxMjIwNjIxMDg1MzM3WjBXMQswCQYDVQQGEwJDTjELMAkGA1UECBMCQkoxCzAJBgNVBAcTAkJKMQ4wDAYDVQQKEwVhY3RvbjEOMAwGA1UECxMFYWN0b24xDjAMBgNVBAMTBWFjdG9uMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk4AyvuJa5KjnFMnnOX1Um3m5V9N1kCorETOMEigsym2wamyqrw5cLeaT5al8IS18Qyczu69r0W/epW+e5Fsg7T8UsjfQwxt1b+A+E78bHQuPXhC6AznkS/MT5zT50twMseSf+RwuhrlH0YjKZxsERuIa09h2IoacnNkrAJf/Uh6PKl1otIoMKpE1uq9czo/q+UgJr0ruvajV9Z4pdvMH04rMcYtEnhHgOj5q9F4XWKHPltx5DRcEdv2dNVmBNDaMOtkRrkj2L0IMIwyiknqhNoz2JWUVrmButg3xesvK+U1jAoYA1I5p57OJuCkvGsrPLJs5sJO55F6zM4R8nn1j4wIDAQABoyEwHzAdBgNVHQ4EFgQUdbb+w+9kBVu9Wz6RZghPJL6LN80wDQYJKoZIhvcNAQEFBQADggEBAIqbMLrOgWOOmPpLEE2jDjcBCLc1LTkCCEdmarUo2Y+Fk7B3zseN1YRsWxpHx5V5UVmcdncfDQY0WRz+S7dBkIH9TyDTNVCkqKppZsLlZuIavsbZXHWr6GZb3FB8fhj7GhaqZ/HSh0qNL1RUInsk7CIzpGBXzT0MkSr0u1sFSYeygMwESho8TZM62Q4JOwy3dAKYvEWJWIfjnf1TTnQoIF+W70P2zKwcqPSR2V8TXCDmF8iOgc7gzOBPmZqTxNg6MBoZ2TZYBpXyf4hF9IYDQTIbqKS3APdiaHgDYw6ohts2aYmDbLtwdqm2nCg69OASbJBVxUM10ZuhC5NkRwPU1w0=-----END CERTIFICATE-----

            3、-storepasswd(更改密钥库的存储口令)

            可用选项:

             -new                       新口令 -keystore             密钥库名称 -storepass                 密钥库口令 -storetype           密钥库类型 -providername     提供方名称 -providerclass   提供方类名 -providerarg               提供方参数 -providerpath         提供方类路径 -v                              详细输出

            示例:修改密钥库密码

            keytool -storepasswd -new 111111 -keystore acton.keystore -storepass 123456

            注意:密钥至少为6位

            4、-changealias(更改条目的别名)

            可用项目:

             -alias                   要处理的条目的别名 -destalias           目标别名 -keypass                   密钥口令 -keystore             密钥库名称 -storepass                 密钥库口令 -storetype           密钥库类型 -providername     提供方名称 -providerclass   提供方类名 -providerarg               提供方参数 -providerpath         提供方类路径 -v                              详细输出 -protected                      通过受保护的机制的口令

            示例:修改acton为newacton

            keytool -changealias -alias acton -destalias newacton -keystore acton.keystore -storepass 123456

            5、-delete(删除条目)

            可用选项:

             -alias                   要处理的条目的别名 -keystore             密钥库名称 -storepass                 密钥库口令 -storetype           密钥库类型 -providername     提供方名称 -providerclass   提供方类名 -providerarg               提供方参数 -providerpath         提供方类路径 -v                              详细输出 -protected                      通过受保护的机制的口令

            示例:删除acton条目

            keytool -delete -alias acton -keystore acton.keystore -storepass 123456

            6、-exportcert(导出证书)

            可用选项:

             -rfc                            以 RFC 样式输出 -alias                   要处理的条目的别名 -file                 输出文件名 -keystore             密钥库名称 -storepass                 密钥库口令 -storetype           密钥库类型 -providername     提供方名称 -providerclass   提供方类名 -providerarg               提供方参数 -providerpath         提供方类路径 -v                              详细输出 -protected                      通过受保护的机制的口令

            示例:

            keytool -exportcert -alias acton -keystore acton.keystore -storepass 123456 -file acton.cer -rfc
            • alias:指定别名acton
            • keystore:指定密钥库acton.keystore
            • storepass:指定密钥库密码
            • file:指定输出的证书文件acton.cer
            • rfc:指定以Base64编码格式输出

              7、-printcert(打印证书内容)

              可用选项:

               -rfc                        以 RFC 样式输出 -file             输入文件名 -sslserver   SSL 服务器主机和端口 -jarfile          已签名的 jar 文件 -v                          详细输出

              示例:

              keytool -printcert -file acton.cer
              所有者: CN=acton, OU=acton, O=acton, L=BJ, ST=BJ, C=CN发布者: CN=acton, OU=acton, O=acton, L=BJ, ST=BJ, C=CN序列号: 28ab6921有效期为 Mon Nov 27 17:22:38 CST 2023 至 Sun Jun 21 17:22:38 CST 2122证书指纹: MD5:  20:DC:B9:57:65:B1:77:FE:07:33:D6:7B:BE:E5:4A:AC SHA1: 00:1A:D4:2A:A9:F0:56:D7:33:41:4D:05:BA:8A:6B:7E:E4:E7:7D:12 SHA256: 38:0F:24:D3:FA:E4:49:D6:D2:B8:E7:84:ED:4A:86:D2:93:4E:9E:5D:56:EA:6F:9F:C3:E9:85:3A:14:F9:E2:AE签名算法名称: SHA1withRSA主体公共密钥算法: 2048 位 RSA 密钥版本: 3扩展:#1: ObjectId: 2.5.29.14 Criticality=falseSubjectKeyIdentifier [KeyIdentifier [0000: 07 F6 FF 44 6D CB 88 E1   64 5C BD 09 FB 3D 83 31  ...Dm...d\...=.10010: B0 63 5B D5                                        .c[.]]

              示例:Base64编码打印

              keytool -printcert -file acton.cer -rfc
              -----BEGIN CERTIFICATE-----MIIDTzCCAjegAwIBAgIEKKtpITANBgkqhkiG9w0BAQUFADBXMQswCQYDVQQGEwJDTjELMAkGA1UECBMCQkoxCzAJBgNVBAcTAkJKMQ4wDAYDVQQKEwVhY3RvbjEOMAwGA1UECxMFYWN0b24xDjAMBgNVBAMTBWFjdG9uMCAXDTIzMTEyNzA5MjIzOFoYDzIxMjIwNjIxMDkyMjM4WjBXMQswCQYDVQQGEwJDTjELMAkGA1UECBMCQkoxCzAJBgNVBAcTAkJKMQ4wDAYDVQQKEwVhY3RvbjEOMAwGA1UECxMFYWN0b24xDjAMBgNVBAMTBWFjdG9uMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr//MAh/T/i6L7zDE9qi33zy0e06Se/c+17xFrTbRSTqQaO9xu57ht7lSgV0DnnrbwLnApKevHttjmSOAYOo1hhQwwHNCwd07GtU+x4T0LMwReJH78xlQGegMA5ffhDMR0SF47/oygPsyHUKNh6Ynw/5n+LAwU5LYm0eiE4GNj25T/E4hy9TNqMZI8jj3L3WUAgRXhn3aXlhsGQxVFxac0QoVhuNXGac7q9kTe7CvUzWU7RGf9Mg/CbDvn0MuUbk67Hw1VSEbLcC61BTV7p1xpfJc2vHnRfrLM96/U0XTiJM2V4MGxP7Qe+JDWos6Mnxtm+kUOWb+ZaXhg385SHNvnwIDAQABoyEwHzAdBgNVHQ4EFgQUB/b/RG3LiOFkXL0J+z2DMbBjW9UwDQYJKoZIhvcNAQEFBQADggEBAGsaAW70ru1tSnEN7g6mbRvtsWXdUNz2z90DdOISVritufz3xlgKWWKMUNwTAjooSFaj3go9bCDhULd49+Y6mrkhcVzgkOx7q67nFl44B2mgXvOjzBQ8zhzwzZDNfGhwVShUm9nNNE0J4ucqbV9a600ce3nF2SD8jICbJ5mWx2437+j0ki9uhPPm7ryl7v8r/RAX4rXdcy6oqS/UqH+1FMU0qbHzFO7ZB9DVn0vJp5RnatcUqC+s9dKvkP3orShmrpx8aoGWfjdkR1w9C8Rz9D9gVRYN46X655DzkClh5j5XuMzZVwcIUazC83LRbldee4U90vFUdVOGccoGbzcpWCw=-----END CERTIFICATE-----

              8、-certreq(生成证书请求)

              可用选项:

               -alias                   要处理的条目的别名 -sigalg                 签名算法名称 -file                 输出文件名 -keypass                   密钥口令 -keystore             密钥库名称 -dname                   唯一判别名 -storepass                 密钥库口令 -storetype           密钥库类型 -providername     提供方名称 -providerclass   提供方类名 -providerarg               提供方参数 -providerpath         提供方类路径 -v                              详细输出 -protected                      通过受保护的机制的口令

              示例:

              keytool -certreq -alias acton -keystore acton.keystore -storepass 123456 -file acton.csr -v

              执行上述命令后,将得到一个PKCS#10编码格式的数字证书签发申请文件acton.csr。

              9、-printcertreq(打印证书请求的内容)

              可用选项:

               -file   输入文件名 -v                详细输出

              示例:

              keytool -printcertreq -file acton.csr -v
              PKCS #10 证书请求 (版本 1.0)主体: CN=acton, OU=acton, O=acton, L=BJ, ST=BJ, C=CN格式: X.509公共密钥: 2048 位 RSA 密钥签名算法: SHA256withRSA扩展请求:#1: ObjectId: 2.5.29.14 Criticality=falseSubjectKeyIdentifier [KeyIdentifier [0000: 07 F6 FF 44 6D CB 88 E1   64 5C BD 09 FB 3D 83 31  ...Dm...d\...=.10010: B0 63 5B D5                                        .c[.]]

              后续可以提交CSR文件内容给CA机构,获得相应的签发数字证书。

              10、-gencert(根据证书请求生成证书)

              可用选项:

               -rfc                            以 RFC 样式输出 -infile               输入文件名 -outfile              输出文件名 -alias                   要处理的条目的别名 -sigalg                 签名算法名称 -dname                   唯一判别名 -startdate           证书有效期开始日期/时间 -ext                     X.509 扩展 -validity              有效天数 -keypass                   密钥口令 -keystore             密钥库名称 -storepass                 密钥库口令 -storetype           密钥库类型 -providername     提供方名称 -providerclass   提供方类名 -providerarg               提供方参数 -providerpath         提供方类路径 -v                              详细输出 -protected                      通过受保护的机制的口令

              示例:正常的CA签发证书需要收费,所以我们只能用acton.keystore密钥库中的acton的私钥来签发acton.csr,自己给自己签发证书

              keytool -gencert -infile acton.csr -outfile acton_sign.cer -alias acton -keystore acton.keystore -storepass 123456

              生成了签发完毕的证书文件acton_sign.cer。

              11、-importcert(导入证书或证书链)

              可用选项:

               -noprompt                       不提示 -trustcacerts                   信任来自 cacerts 的证书 -protected                      通过受保护的机制的口令 -alias                   要处理的条目的别名 -file                 输入文件名 -keypass                   密钥口令 -keystore             密钥库名称 -storepass                 密钥库口令 -storetype           密钥库类型 -providername     提供方名称 -providerclass   提供方类名 -providerarg               提供方参数 -providerpath         提供方类路径 -v                              详细输出

              示例:将自己签发完毕的acton_sign.cer导入到密钥库

              keytool -importcert -trustcacerts -alias acton_sign -file acton_sign.cer -keystore acton.keystore -storepass 123456
              所有者: CN=acton, OU=acton, O=acton, L=BJ, ST=BJ, C=CN发布者: CN=acton, OU=acton, O=acton, L=BJ, ST=BJ, C=CN序列号: 342dcb68有效期为 Mon Nov 27 19:51:00 CST 2023 至 Sun Feb 25 19:51:00 CST 2024证书指纹: MD5:  FF:A5:4B:71:FD:3B:E2:CC:F3:51:CD:FE:08:A9:3B:D4 SHA1: 21:2B:9F:12:14:75:0E:A8:EA:CB:C8:C9:F6:88:B7:45:D9:3D:CD:24 SHA256: B4:53:E6:DD:B4:6E:3D:2B:28:26:66:8B:4F:60:B0:FB:D2:27:90:7E:EC:7A:C5:FB:1E:06:13:7C:2F:23:7F:18签名算法名称: SHA256withRSA主体公共密钥算法: 2048 位 RSA 密钥版本: 3扩展:#1: ObjectId: 2.5.29.14 Criticality=falseSubjectKeyIdentifier [KeyIdentifier [0000: 26 D3 0B CF F3 C5 E7 A0   60 39 F1 C9 8C C5 73 C9  &.......`9....s.0010: EC 66 5A 36                                        .fZ6]]是否信任此证书? [否]:  y证书已添加到密钥库中

              查看密钥库内容:

              keytool -list -keystore acton.keystore -storepass 123456
              密钥库类型: jks密钥库提供方: SUN您的密钥库包含 2 个条目acton_sign, 2023-11-27, trustedCertEntry,证书指纹 (SHA1): 21:2B:9F:12:14:75:0E:A8:EA:CB:C8:C9:F6:88:B7:45:D9:3D:CD:24acton, 2023-11-27, PrivateKeyEntry,证书指纹 (SHA1): 86:43:64:83:AC:3A:AE:F1:9D:BB:CE:E5:C1:07:8C:A5:2A:F0:4E:3E

上一篇:服务器的uri怎么看?

下一篇:Android ADB源码深度解析,开发者必备知识指南