keytool_keytools - CSDN
  • jdk keytool使用

    千次阅读 2018-03-20 17:38:11
    jdk keytool Keytool 是一个Java 数据证书的管理工具 ,Keytool 将密钥(key)和证书(certificates)存在一个称为keystore的文件中。 在keystore里,包含两种数据: 1. 密钥实体(Key entity)——密钥...

    jdk keytool

    Keytool 是一个Java 数据证书的管理工具 ,Keytool 将密钥(key)和证书(certificates)存在一个称为keystore的文件中。
    在keystore里,包含两种数据:
    1. 密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)
    2. 可信任的证书实体(trusted certificate entries)——只包含公钥

    ailas(别名)每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写

    keytool 命令参数

    • genkey

      在用户主目录中创建一个默认文件”.keystore”,还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书(在没有指定生成位置的情况下,keystore会存在用户系统默认目录,如:对于window xp系统,会生成在系统的C:/Documents and ettings/UserName/文件名为“.keystore”)

    • alias

    • alias 产生别名
    • keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中)
    • keyalg 指定密钥的算法 (如 RSA DSA(如果不指定默认采用DSA))
    • validity 指定创建的证书有效期多少天
    • keysize 指定密钥长度
    • storepass 指定密钥库的密码(获取keystore信息所需的密码)
    • keypass 指定别名条目的密码(私钥的密码)
    • dname

      指定证书拥有者信息 例如: "CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码"

    • list 显示密钥库中的证书信息 keytool -list -v -keystore 指定keystore -storepass 密码
    • v 显示密钥库中的证书详细信息
    • export 将别名指定的证书导出到文件 keytool -export -alias 需要导出的别名 -keystore 指定keystore -file 指定导出的证书位置及证书名称 -storepass 密码
    • file 参数指定导出到文件的文件名
    • delete 删除密钥库中某条目 keytool -delete -alias 指定需删除的别 -keystore 指定keystore -storepass 密码
    • printcert 查看导出的证书信息 keytool -printcert -file yushan.crt
    • keypasswd 修改密钥库中指定条目口令 keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new 新密码 -storepass keystore密码 -keystore sage
      -storepasswd 修改keystore口令 keytool -storepasswd -keystore e:/yushan.keystore(需修改口令的keystore) -storepass 123456(原始密码) -new yushan(新密码)
    • import 将已签名数字证书导入密钥库 keytool -import -alias 指定导入条目的别名 -keystore 指定keystore -file 需导入的证书

      各选项的缺省值:

      • alias “mykey”
      • keyalg “DSA”
      • keysize 1024
      • validity 90
      • keystore 用户宿主目录中名为 .keystore 的文件
      • file 读时为标准输入,写时为标准输出

    示例

    1. keystore的生成:

      • 分阶段生成:

        keytool -genkey -alias yushan(别名) -keypass yushan(别名密码) -keyalg RSA(算法) -keysize 1024(密钥长度) -validity 365(有效期,天单位) -keystore e:/yushan.keystore(指定生成证书的位置和证书名称) -storepass 123456(获取keystore信息的密码)
        回车输入相关信息即可;

      • 一次性生成:

        keytool -genkey -alias yushan -keypass yushan -keyalg RSA -keysize 1024 -validity 365 -keystore e:/yushan.keystore -storepass 123456 -dname "CN=(名字与
        姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)"

        (中英文都可)

    2. keystore信息的查看

      • keytool -list -v -keystore e:/keytool /yushan.keystore -storepass 123456
        
        显示内容:
        ---------------------------------------------------------------------
        
           Keystore 类型: JKS
        Keystore 提供者: SUN
        
        您的 keystore 包含 1 输入
        
        别名名称: yushan
        创建日期: 2009-7-29
        项类型: PrivateKeyEntry
        认证链长度: 1
        认证 [1]:
        所有者:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
        签发人:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
        序列号:4a6f29ed
        有效期: Wed Jul 29 00:40:13 CST 2009Thu Jul 29 00:40:13 CST 2010
        证书指纹:
                 MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3
                 SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8
                 签名算法名称:SHA1withRSA
        
                 版本: 3
        --------------------------------------------------------------------
        

      缺省情况下,-list 命令打印证书的 MD5 指纹。而如果指定了 -v 选项,将以可读格式打印证书,如果指定了 -rfc 选项,将以可打印的编码格式输出证书。

      • keytool -list -rfc -keystore e:/yushan.keystore -storepass 123456
        显示:
        
        -------------------------------------------------------------------------------------------------------
        
        Keystore 类型: JKS
        Keystore 提供者: SUN
        
        您的 keystore 包含 1 输入
        
        别名名称: yushan
        创建日期: 2009-7-29
        项类型: PrivateKeyEntry
        认证链长度: 1
        认证 [1]:
        -----BEGIN CERTIFICATE-----
        MIICSzCCAbSgAwIBAgIESm8p7TANBgkqhkiG9w0BAQUFADBqMQ8wDQYDVQQGDAbkuK3lm70xDzAN
        BgNVBAgMBua5luWNlzEPMA0GA1UEBwwG5rmY5r2tMREwDwYDVQQKDAh4eOWNj+S8mjERMA8GA1UE
        CwwIeHjlhazlj7gxDzANBgNVBAMTBnl1c2hhbjAeFw0wOTA3MjgxNjQwMTNaFw0xMDA3MjgxNjQw
        MTNaMGoxDzANBgNVBAYMBuS4reWbvTEPMA0GA1UECAwG5rmW5Y2XMQ8wDQYDVQQHDAbmuZjmva0x
        ETAPBgNVBAoMCHh45Y2P5LyaMREwDwYDVQQLDAh4eOWFrOWPuDEPMA0GA1UEAxMGeXVzaGFuMIGf
        MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJoru1RQczRzTnBWxefVNspQBykS220rS8Y/oX3mZa
        hjL4wLfOURzUuxxuVQR2jx7QI+XKME+DHQj9r6aAcLBCi/T1jwF8mVYxtpRuTzE/6KEZdhowEe70
        liWLVE+hytLBHZ03Zhwcd6q5HUMu27du3MPQvqiwzTY7MrwIvQQ8iQIDAQABMA0GCSqGSIb3DQEB
        BQUAA4GBAGoQQ1/FnTfkpQh+Ni6h3fZdn3sR8ZzDMbOAIYVLAhBb85XDJ8QZTarHbZMJcIdHxAl1
        i08ct3E8U87V9t8GZFWVC4BFg/+zeFEv76SFpVE56iX7P1jpsu78z0m69hHlds77VJTdyfMSvtXv
        sYHP3fxfzx9WyhipBwd8VPK/NgEP
        -----END CERTIFICATE-----
        
        -------------------------------------------------------------------------------------------------------
    展开全文
  • Keytool与数字证书

    2020-04-10 23:30:37
    Keytool与数字证书
  • 今天在写百度地图的时候遇到的问题,折腾了很久,JDK的配置是OK的,上网搜了一下,也没找到满意的答案,(如果有谁知道怎么解决,麻烦贴出来学习一下,谢谢了) 虽然无法直接得到SHA1,但是还有一个方法,虽然比较...

    解释:

    数字签名:指的是我们打包程序时所用的keystore的SHA1指纹

    方法1:打开AS,进入一个项目,打开terminal窗口,其全局快捷键:Alt+F12

    进入keystore所在的目录;

    输入如下命令:

    keytool -list -v -keystore <keystore文件名>

    然后输入正确的密码即可得到


    方法2:

    debug.keystore默认在c盘,完整路径是c-user-.android文件夹下,依次为示例,Win键+R键,输入cmd,定位到jdk/bin目录下的toolkey文件,然后输入

    keytool -list -v -keystore <keystore文件名>,即可得到


    而今天在写百度地图的时候遇到的问题,折腾了很久,JDK的配置是OK的,上网搜了一下,也没找到满意的答案,(如果有谁知道怎么解决,麻烦贴出来学习一下,谢谢了)

    虽然无法直接得到SHA1,但还有一个方法,虽然比较麻烦,但在没招的情况下,还是可行的。

    具体方法如下:


    进入CMD,进入JDK安装的路径,在我工作的电脑上,路径为:          C:\Program Files\Java\jdk1.8.0_45\bin

    当然,你也可以双击此电脑,进入资源管理器,然后找到C:\Program Files\Java\jdk1.8.0_45\bin这个目录(此处根据自己安装的路径选择)

    我们知道这里的exe只能在cmd里运行,所以当我们双击exe的时候发现,程序一笑而过,因此我们只能用命令符来操作了。


    然后输入keytool.exe -list -keystore C:\Users\kowal\.android\debug.keystore,其中,keystore是生成的debug的秘钥,接着就大功告成了。




    接着,将拿到的SHA1复制到百度开放平台就可以拿到百度的Key了。


    本人能力有限,如果您在阅读过程中发现任何有误导性的描述,请及时告知我更正,以便受益于更多开发者。谢谢

    展开全文
  • java中Keytool的使用总结

    万次阅读 2010-01-05 11:39:00
    -----------------------------------------------------------Keytool是一个Java数据证书的管理工具,Keytool将密钥(key)和证书(certificates)存在...

    以前用过几次这个东东,但每次都重新查询一次。本文原始出处是这里

    -----------------------------------------------------------

    Keytool 是一个Java 数据证书的管理工具 ,Keytool 将密钥(key)和证书(certificates)存在一个称为keystore的文件中 在keystore里,包含两种数据:
    密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)
    可信任的证书实体(trusted certificate entries)——只包含公钥


    ailas(别名)每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写

     

    JDK中keytool 常用命令:

    -genkey      在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书
    (在没有指定生成位置的情况下,keystore会存在用户系统默认目录,如:对于window xp系统,会生成在系统的C:/Documents and Settings/UserName/文件名为“.keystore”)
    -alias       产生别名
    -keystore    指定密钥库的名称(产生的各类信息将不在.keystore文件中)
    -keyalg      指定密钥的算法 (如 RSA  DSA(如果不指定默认采用DSA))
    -validity    指定创建的证书有效期多少天
    -keysize     指定密钥长度
    -storepass   指定密钥库的密码(获取keystore信息所需的密码)
    -keypass     指定别名条目的密码(私钥的密码)
    -dname       指定证书拥有者信息 例如:  "CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码"
    -list        显示密钥库中的证书信息      keytool -list -v -keystore 指定keystore -storepass 密码
    -v           显示密钥库中的证书详细信息
    -export      将别名指定的证书导出到文件  keytool -export -alias 需要导出的别名 -keystore 指定keystore -file 指定导出的证书位置及证书名称 -storepass 密码
    -file        参数指定导出到文件的文件名
    -delete      删除密钥库中某条目          keytool -delete -alias 指定需删除的别  -keystore 指定keystore  -storepass 密码
    -printcert   查看导出的证书信息          keytool -printcert -file yushan.crt
    -keypasswd   修改密钥库中指定条目口令    keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new  新密码  -storepass keystore密码  -keystore sage
    -storepasswd 修改keystore口令      keytool -storepasswd -keystore e:/yushan.keystore(需修改口令的keystore) -storepass 123456(原始密码) -new yushan(新密码)
    -import      将已签名数字证书导入密钥库  keytool -import -alias 指定导入条目的别名 -keystore 指定keystore -file 需导入的证书

     

    下面是各选项的缺省值。 
    -alias "mykey"

    -keyalg "DSA"

    -keysize 1024

    -validity 90

    -keystore 用户宿主目录中名为 .keystore 的文件

    -file 读时为标准输入,写时为标准输出

              


    1、keystore的生成:

    分阶段生成:
         keytool -genkey -alias yushan(别名) -keypass yushan(别名密码) -keyalg RSA(算法) -keysize 1024(密钥长度) -validity 365(有效期,天单位) -keystore        

    e:/yushan.keystore(指定生成证书的位置和证书名称) -storepass 123456(获取keystore信息的密码);回车输入相关信息即可;
        
    一次性生成:
         keytool -genkey -alias yushan -keypass yushan -keyalg RSA -keysize 1024 -validity 365 -keystore  e:/yushan.keystore -storepass 123456 -dname "CN=(名字与

    姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)";(中英文即可)

    2、keystore信息的查看:
       keytool -list  -v -keystore e:/keytool /yushan.keystore -storepass 123456
       显示内容:
    ---------------------------------------------------------------------
       Keystore 类型: JKS
    Keystore 提供者: SUN

    您的 keystore 包含 1 输入

    别名名称: yushan
    创建日期: 2009-7-29
    项类型: PrivateKeyEntry
    认证链长度: 1
    认证 [1]:
    所有者:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
    签发人:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
    序列号:4a6f29ed
    有效期: Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010
    证书指纹:
             MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3
             SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8
             签名算法名称:SHA1withRSA
             版本: 3
    --------------------------------------------------------------------

     

    缺省情况下,-list 命令打印证书的 MD5 指纹。而如果指定了 -v 选项,将以可读格式打印证书,如果指定了 -rfc 选项,将以可打印的编码格式输出证书。


    keytool -list  -rfc -keystore e:/yushan.keystore -storepass 123456

    显示:

    -------------------------------------------------------------------------------------------------------

    Keystore 类型: JKS
    Keystore 提供者: SUN

    您的 keystore 包含 1 输入

    别名名称: yushan
    创建日期: 2009-7-29
    项类型: PrivateKeyEntry
    认证链长度: 1
    认证 [1]:
    -----BEGIN CERTIFICATE-----
    MIICSzCCAbSgAwIBAgIESm8p7TANBgkqhkiG9w0BAQUFADBqMQ8wDQYDVQQGDAbkuK3lm70xDzAN
    BgNVBAgMBua5luWNlzEPMA0GA1UEBwwG5rmY5r2tMREwDwYDVQQKDAh4eOWNj+S8mjERMA8GA1UE
    CwwIeHjlhazlj7gxDzANBgNVBAMTBnl1c2hhbjAeFw0wOTA3MjgxNjQwMTNaFw0xMDA3MjgxNjQw
    MTNaMGoxDzANBgNVBAYMBuS4reWbvTEPMA0GA1UECAwG5rmW5Y2XMQ8wDQYDVQQHDAbmuZjmva0x
    ETAPBgNVBAoMCHh45Y2P5LyaMREwDwYDVQQLDAh4eOWFrOWPuDEPMA0GA1UEAxMGeXVzaGFuMIGf
    MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJoru1RQczRzTnBWxefVNspQBykS220rS8Y/oX3mZa
    hjL4wLfOURzUuxxuVQR2jx7QI+XKME+DHQj9r6aAcLBCi/T1jwF8mVYxtpRuTzE/6KEZdhowEe70
    liWLVE+hytLBHZ03Zhwcd6q5HUMu27du3MPQvqiwzTY7MrwIvQQ8iQIDAQABMA0GCSqGSIb3DQEB
    BQUAA4GBAGoQQ1/FnTfkpQh+Ni6h3fZdn3sR8ZzDMbOAIYVLAhBb85XDJ8QZTarHbZMJcIdHxAl1
    i08ct3E8U87V9t8GZFWVC4BFg/+zeFEv76SFpVE56iX7P1jpsu78z0m69hHlds77VJTdyfMSvtXv
    sYHP3fxfzx9WyhipBwd8VPK/NgEP
    -----END CERTIFICATE-----

    -------------------------------------------------------------------------------------------------------

    3、证书的导出:

    keytool -export -alias yushan -keystore e:/yushan.keystore -file e:/yushan.crt(指定导出的证书位置及证书名称) -storepass 123456

    4、查看导出的证书信息
       keytool -printcert -file yushan.crt
       显示:(在windows下可以双击yushan.crt查看)
    -----------------------------------------------------------------------
    所有者:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
    签发人:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
    序列号:4a6f29ed
    有效期: Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010
    证书指纹:
             MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3
             SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8
             签名算法名称:SHA1withRSA
             版本: 3
    -----------------------------------------------------------------------

    5、证书的导入:
       准备一个导入的证书:
       keytool -genkey -alias shuany -keypass shuany -keyalg RSA -keysize 1024 -validity 365 -keystore  e:/shuany.keystore -storepass 123456 -dname "CN=shuany,

    OU=xx, O=xx, L=xx, ST=xx, C=xx";
       keytool -export -alias shuany -keystore e:/shuany.keystore -file e:/shuany.crt -storepass 123456
     
      现在将shuany.crt 加入到yushan.keystore中:
      keytool -import -alias shuany(指定导入证书的别名,如果不指定默认为mykey,别名唯一,否则导入出错) -file e:/shuany.crt -keystore e:/yushan.keystore -storepass

    123456

     keytool -list  -v -keystore e:/keytool /yushan.keystore -storepass 123456
    显示:
    ------------------------------------------------------------------------------
    Keystore 类型: JKS
    Keystore 提供者: SUN

    您的 keystore 包含 2 输入

    别名名称: yushan
    创建日期: 2009-7-29
    项类型: PrivateKeyEntry
    认证链长度: 1
    认证 [1]:
    所有者:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
    签发人:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国
    序列号:4a6f29ed
    有效期: Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010
    证书指纹:
             MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3
             SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8
             签名算法名称:SHA1withRSA
             版本: 3


    *******************************************
    *******************************************


    别名名称: shuany
    创建日期: 2009-7-29
    输入类型: trustedCertEntry

    所有者:CN=shuany, OU=xx, O=xx, L=xx, ST=xx, C=xx
    签发人:CN=shuany, OU=xx, O=xx, L=xx, ST=xx, C=xx
    序列号:4a6f2cd9
    有效期: Wed Jul 29 00:52:41 CST 2009 至Thu Jul 29 00:52:41 CST 2010
    证书指纹:
             MD5:15:03:57:9B:14:BD:C5:50:21:15:47:1E:29:87:A4:E6
             SHA1:C1:4F:8B:CD:5E:C2:94:77:B7:42:29:35:5C:BB:BB:2E:9E:F0:89:F5
             签名算法名称:SHA1withRSA
             版本: 3


    *******************************************
    *******************************************
    ------------------------------------------------------------------------------

    6、证书条目的删除:
     keytool -delete -alias shuany(指定需删除的别名) -keystore yushan.keystore -storepass 123456
     
    7、证书条目口令的修改:
    keytool -keypasswd -alias yushan(需要修改密码的别名) -keypass yushan(原始密码) -new 123456(别名的新密码)  -keystore e:/yushan.keystore -storepass 123456

    8、keystore口令的修改:
     keytool -storepasswd -keystore e:/yushan.keystore(需修改口令的keystore) -storepass 123456(原始密码) -new yushan(新密码)

     

    9、修改keystore中别名为yushan的信息

     

    keytool -selfcert -alias yushan -keypass yushan -keystore e:/yushan.keystore -storepass 123456 -dname "cn=yushan,ou=yushan,o=yushan,c=us"

     

    keytool 详细的说明:

    http://www.javaresearch.org/article/6718.html

     

     

    展开全文
  • Java Keytool工具简介

    万次阅读 2019-12-18 06:20:17
    随着信息安全的重要性的日益提高,HTTP/FTP等越来越多的被迁...Java自带的Keytool工具就是这样的一种工具。被广泛的用语管理密钥和证书。 前提 keytool工具是JDK自带的工具,所以前提就是安装JDK。具体可以参照Mave

    随着信息安全的重要性的日益提高,HTTP/FTP等越来越多的被迁到了 HTTPS/SFTP,SSL/TLS已经是避无可避。了解一些简单的加密算法的基本理论或者常见工具,或者如何生成和使用证书,这些都在工作中应用的愈加广泛。Java自带的Keytool工具就是这样的一种工具,被广泛地用于管理密钥和证书。

    前提

    keytool工具是JDK自带的工具,所以前提就是安装JDK。具体可以参照Maven的安装脚本,安装Maven的前提是安装JDK,所以下面的脚本执行之后,JDK自然会被安装。已经有JDK的可以跳过此步。

    安装参照 http://blog.csdn.net/liumiaocn/article/details/61920553

    安装确认

    确认keytool可用

    [root@liumiaocn ~]# which keytool
    /usr/local/java/jdk1.8.0_121/bin/keytool
    [root@liumiaocn ~]#
    

    命令说明

    keytool命令以及常见的option如下所示:

    项目 详细
    -certreq 创建证书请求
    -changealias 变更证书私钥
    -exportcert 导出证书
    -genkeypair 创建密钥对
    -genseckey 创建加密密钥
    -gencert 依据证书请求创建证书
    -importcert 导入证书或者证书链
    -importpass 导入密码
    -importkeystore 从其他keystore中导入一个或者所有条目
    -printcert 打印证书内容
    -printcertreq 打印证书请求的内容
    -printcrl 打印CRL文件内容
    -genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书
    -alias 产生别名 缺省值"mykey"
    -keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中)
    -keyalg 指定密钥的算法 (如 RSA DSA(如果不指定默认采用DSA))
    -validity 指定创建的证书有效期多少天 缺省值90天
    -keysize 指定密钥长度 缺省值1024
    -storepass 指定密钥库的密码(获取keystore信息所需的密码)
    -keypass 指定别名条目的密码(私钥的密码)
    -dname 指定证书拥有者信息 例如: “CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码”
    -list 显示密钥库中的证书信息 keytool -list -v -keystore 指定keystore -storepass 密码
    -v 显示密钥库中的证书详细信息
    -export 将别名指定的证书导出到文件 keytool -export -alias 需要导出的别名 -keystore 指定keystore -file 指定导出的证书位置及证书名称 -storepass 密码
    -file 参数指定导出到文件的文件名
    -delete 删除密钥库中某条目 keytool -delete -alias 指定需删除的别 -keystore 指定keystore -storepass 密码
    -printcert 查看导出的证书信息 keytool -printcert -file 证书名称
    -keypasswd 修改密钥库中指定条目口令
    -storepasswd 修改keystore口令 keytool -storepasswd -keystore keystore的FULLPATH -storepass 原始密码 -new 新密码
    -import 将已签名数字证书导入密钥库 keytool -import -alias 指定导入条目的别名 -keystore 指定keystore -file 需导入的证书

    证书管理

    证书的发行有专门的CA机构,但是基本上都是要付费的,CA机构又不是NGO,无利不起早,不然为什么人家要做这个呢。一般来说除非是非常正式的项目,一般的项目很多情况下使用自发行的证书即可。

    基础知识

    认证方式 证书种类 详细
    单向认证 服务器端证书 客户端对服务器端的证书进行认证
    双向认证 服务端证书/客户端证书 客户端对服务器端的证书进行认证,同时服务器端对客户端的证书也进行认证

    keystore生成

    按照如下信息生成keystore

    项目 详细
    alias名称 kstore
    keypass init123
    算法 RSA
    秘钥长度 2048
    有效期限(天) 30
    保存路径 /tmp/kstore.keystore
    storepass init234

    执行命令:

    keytool -genkey -alias kstore -keypass init123 -keyalg RSA -keysize 2048 -validity 30 -keystore /tmp/kstore.keystore -storepass init234
    

    执行参照

    [root@liumiaocn ~]# keytool -genkey -alias kstore -keypass init123 -keyalg RSA -keysize 2048 -validity 30 -keystore /tmp/kstore.keystore -storepass init234
    What is your first and last name?
      [Unknown]:  michael
    What is the name of your organizational unit?
      [Unknown]:  liumiaocn
    What is the name of your organization?
      [Unknown]:  ngo
    What is the name of your City or Locality?
      [Unknown]:  dalian
    What is the name of your State or Province?
      [Unknown]:  liaoning
    What is the two-letter country code for this unit?
      [Unknown]:  CN
    Is CN=michael, OU=liumiaocn, O=ngo, L=dalian, ST=liaoning, C=CN correct?
      [no]:  yes
    
    [root@liumiaocn ~]#
    

    生成结果文件确认

    [root@liumiaocn ~]# ls -l /tmp/kstore.keystore
    -rw-r--r--. 1 root root 2230 Mar 10 17:46 /tmp/kstore.keystore
    [root@liumiaocn ~]# file /tmp/kstore.keystore
    /tmp/kstore.keystore: Java KeyStore
    [root@liumiaocn ~]#
    

    keystore确认

    因为生成的/tmp/kstore.keystore非文本类型文件,无法直接确认内容,使用list子命令可以确认keystore的详细信息。
    执行命令:

    keytool -list  -v -keystore /tmp/kstore.keystore -storepass init234
    

    执行参照

    [root@liumiaocn ~]# keytool -list  -v -keystore /tmp/kstore.keystore -storepass init234
    
    Keystore type: JKS
    Keystore provider: SUN
    
    Your keystore contains 1 entry
    
    Alias name: kstore
    Creation date: Mar 10, 2017
    Entry type: PrivateKeyEntry
    Certificate chain length: 1
    Certificate[1]:
    Owner: CN=michael, OU=liumiaocn, O=ngo, L=dalian, ST=liaoning, C=CN
    Issuer: CN=michael, OU=liumiaocn, O=ngo, L=dalian, ST=liaoning, C=CN
    Serial number: 58700a1
    Valid from: Fri Mar 10 17:46:00 EST 2017 until: Sun Apr 09 18:46:00 EDT 2017
    Certificate fingerprints:
             MD5:  C9:88:B5:3E:62:F1:31:4D:8B:81:9C:45:90:F1:0F:CF
             SHA1: 59:C9:D3:3F:07:80:73:7C:7E:43:94:3B:E5:43:61:FF:14:F1:1A:CC
             SHA256: 32:71:6C:1E:1F:F6:23:01:66:81:92:36:C8:6F:E3:8D:5B:32:C4:F2:10:94:D0:3D:8C:07:5B:91:7A:59:B2:56
             Signature algorithm name: SHA256withRSA
             Version: 3
    
    Extensions:
    
    #1: ObjectId: 2.5.29.14 Criticality=false
    SubjectKeyIdentifier [
    KeyIdentifier [
    0000: 06 91 44 93 93 46 D0 EE   A9 B3 9C A6 6C 1A BD D4  ..D..F......l...
    0010: E3 EA 74 74                                        ..tt
    ]
    ]
    
    
    
    *******************************************
    *******************************************
    
    
    [root@liumiaocn ~]#
    

    证书导出

    单向认证和双向认证时不可避免的用到证书,使用如下命令则可以生成证书。

    keytool -export -alias kstore -keystore /tmp/kstore.keystore -file /tmp/kstore.crt -rfc -storepass init234
    

    注意: storepass的密码是/tmp/kstore.keystore生成时创建的密码,此处是作确认用,输入错误会提示:Keystore was tampered with, or password was incorrect

    执行参照

    [root@liumiaocn ~]# keytool -export -alias kstore -keystore /tmp/kstore.keystore -file /tmp/kstore.crt -rfc -storepass init234
    Certificate stored in file </tmp/kstore.crt>
    [root@liumiaocn ~]# file /tmp/kstore.crt
    /tmp/kstore.crt: PEM certificate
    [root@liumiaocn ~]#
    [root@liumiaocn ~]#
    [root@liumiaocn ~]# cat /tmp/kstore.crt
    -----BEGIN CERTIFICATE-----
    MIIDaTCCAlGgAwIBAgIEBYcAoTANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQGEwJD
    TjERMA8GA1UECBMIbGlhb25pbmcxDzANBgNVBAcTBmRhbGlhbjEMMAoGA1UEChMD
    bmdvMRIwEAYDVQQLEwlsaXVtaWFvY24xEDAOBgNVBAMTB21pY2hhZWwwHhcNMTcw
    MzEwMjI0NjAwWhcNMTcwNDA5MjI0NjAwWjBlMQswCQYDVQQGEwJDTjERMA8GA1UE
    CBMIbGlhb25pbmcxDzANBgNVBAcTBmRhbGlhbjEMMAoGA1UEChMDbmdvMRIwEAYD
    VQQLEwlsaXVtaWFvY24xEDAOBgNVBAMTB21pY2hhZWwwggEiMA0GCSqGSIb3DQEB
    AQUAA4IBDwAwggEKAoIBAQDL/LZP2FH8jybQD7KvKaqo0TS17xr8isWIkYcjVkvP
    T8ZoijWxSLckLI8r83g1Az+obfBuqDlbP/C2qGqf64MGw4mh6/CXnYNgvTOzgLOq
    xFgCSQebBhGx0u6gDCpgkoOdTzljDs6YR7Jv3rhIUodsPxc+Bzf8NXbDi1i6rvi5
    UW7ijLYFH1jAozTOlLtVWK1cw97BlXXcYhUEBsO682UzYvOeqCuPGcXKX7v1CsND
    j+OWf+kfAZ1RF7e3/8IC/FBuAVKHbMD9jWknwAMI7NqGx4Ej6K0LFL6C4XmZMHla
    sznT7Eyri0YS5jdWYI+duOEmcbh7MR1FzsZzcw8mmSKPAgMBAAGjITAfMB0GA1Ud
    DgQWBBQGkUSTk0bQ7qmznKZsGr3U4+p0dDANBgkqhkiG9w0BAQsFAAOCAQEAdRpS
    qAtxZ5JEzN/upzlT6Cp2kK6k7ZQ8ezKYDdUgBtqvMC/TaHwJCMHnvr0aSs24o8SI
    v0vmX01RXf5qzMmelMiJCA2EyRFIsKwKE6fWvyRaK1L5NiKbbivqiOHlvcw5pZfK
    iC/Cy6W0Y7KY4AtfNreAX7lmxQ611sc6F/Dz5rFv8s5gSaBg6oxc3HnXWYkR9iGu
    lYJUhV4tanXsgyhS1/N6PiLbwZ+8ryactI9XgCmao+WQ1M0uhEITZFr8TuRkrG9K
    fmvZUD+STRGDh4Us447vezeCw3s/r2rNsvxSpPhRd9PlPJShLe8lVM+bpkdilGwk
    yOAewyPCWGtaaWXwIQ==
    -----END CERTIFICATE-----
    [root@liumiaocn ~]#
    

    证书确认

    生成的证书的格式是PEM certificate,确认其内容则可以通过如下命令:

    keytool -printcert -file /tmp/kstore.crt
    

    执行参照

    [root@liumiaocn ~]# keytool -printcert -file /tmp/kstore.crt
    Owner: CN=michael, OU=liumiaocn, O=ngo, L=dalian, ST=liaoning, C=CN
    Issuer: CN=michael, OU=liumiaocn, O=ngo, L=dalian, ST=liaoning, C=CN
    Serial number: 58700a1
    Valid from: Fri Mar 10 17:46:00 EST 2017 until: Sun Apr 09 18:46:00 EDT 2017
    Certificate fingerprints:
             MD5:  C9:88:B5:3E:62:F1:31:4D:8B:81:9C:45:90:F1:0F:CF
             SHA1: 59:C9:D3:3F:07:80:73:7C:7E:43:94:3B:E5:43:61:FF:14:F1:1A:CC
             SHA256: 32:71:6C:1E:1F:F6:23:01:66:81:92:36:C8:6F:E3:8D:5B:32:C4:F2:10:94:D0:3D:8C:07:5B:91:7A:59:B2:56
             Signature algorithm name: SHA256withRSA
             Version: 3
    
    Extensions:
    
    #1: ObjectId: 2.5.29.14 Criticality=false
    SubjectKeyIdentifier [
    KeyIdentifier [
    0000: 06 91 44 93 93 46 D0 EE   A9 B3 9C A6 6C 1A BD D4  ..D..F......l...
    0010: E3 EA 74 74                                        ..tt
    ]
    ]
    
    [root@liumiaocn ~]#
    

    证书导入

    将生成的证书倒入到keystore中,使用如下命令:

    keytool -import -alias aliascrt -file /tmp/kstore.crt -keystore /tmp/kstore.keystore -storepass init234 -keypass init123
    

    事前确认

    文件信息

    [root@liumiaocn tmp]# ll kstore.keystore kstore.crt
    -rw-r--r--. 1 root root 1263 Mar 10 17:57 kstore.crt
    -rw-r--r--. 1 root root 2230 Mar 10 17:46 kstore.keystore
    [root@liumiaocn tmp]#
    

    keystore详细

    [root@liumiaocn tmp]# keytool -list  -v -keystore /tmp/kstore.keystore -storepass init234
    
    Keystore type: JKS
    Keystore provider: SUN
    
    Your keystore contains 1 entry
    
    Alias name: kstore
    Creation date: Mar 10, 2017
    Entry type: PrivateKeyEntry
    Certificate chain length: 1
    Certificate[1]:
    Owner: CN=michael, OU=liumiaocn, O=ngo, L=dalian, ST=liaoning, C=CN
    Issuer: CN=michael, OU=liumiaocn, O=ngo, L=dalian, ST=liaoning, C=CN
    Serial number: 58700a1
    Valid from: Fri Mar 10 17:46:00 EST 2017 until: Sun Apr 09 18:46:00 EDT 2017
    Certificate fingerprints:
             MD5:  C9:88:B5:3E:62:F1:31:4D:8B:81:9C:45:90:F1:0F:CF
             SHA1: 59:C9:D3:3F:07:80:73:7C:7E:43:94:3B:E5:43:61:FF:14:F1:1A:CC
             SHA256: 32:71:6C:1E:1F:F6:23:01:66:81:92:36:C8:6F:E3:8D:5B:32:C4:F2:10:94:D0:3D:8C:07:5B:91:7A:59:B2:56
             Signature algorithm name: SHA256withRSA
             Version: 3
    
    Extensions:
    
    #1: ObjectId: 2.5.29.14 Criticality=false
    SubjectKeyIdentifier [
    KeyIdentifier [
    0000: 06 91 44 93 93 46 D0 EE   A9 B3 9C A6 6C 1A BD D4  ..D..F......l...
    0010: E3 EA 74 74                                        ..tt
    ]
    ]
    
    
    
    *******************************************
    *******************************************
    
    
    [root@liumiaocn tmp]#
    
    

    导入

    [root@liumiaocn tmp]# keytool -import -alias aliascrt -file /tmp/kstore.crt -keystore /tmp/kstore.keystore -storepass init234 -keypass init123
    Certificate already exists in keystore under alias <kstore>
    Do you still want to add it? [no]:  yes
    Certificate was added to keystore
    [root@liumiaocn tmp]#
    

    事后确认

    通过文件确认,keystore文件发生了变化

    [root@liumiaocn tmp]# ll kstore.keystore kstore.crt
    -rw-r--r--. 1 root root 1263 Mar 10 17:57 kstore.crt
    -rw-r--r--. 1 root root 3140 Mar 10 18:11 kstore.keystore
    [root@liumiaocn tmp]#
    

    keystore详细确认后发现,证书已经加入: Alias name: aliascrt

    [root@liumiaocn tmp]# keytool -list  -v -keystore /tmp/kstore.keystore -storepass init234
    
    Keystore type: JKS
    Keystore provider: SUN
    
    Your keystore contains 2 entries
    
    Alias name: kstore
    Creation date: Mar 10, 2017
    Entry type: PrivateKeyEntry
    Certificate chain length: 1
    Certificate[1]:
    Owner: CN=michael, OU=liumiaocn, O=ngo, L=dalian, ST=liaoning, C=CN
    Issuer: CN=michael, OU=liumiaocn, O=ngo, L=dalian, ST=liaoning, C=CN
    Serial number: 58700a1
    Valid from: Fri Mar 10 17:46:00 EST 2017 until: Sun Apr 09 18:46:00 EDT 2017
    Certificate fingerprints:
             MD5:  C9:88:B5:3E:62:F1:31:4D:8B:81:9C:45:90:F1:0F:CF
             SHA1: 59:C9:D3:3F:07:80:73:7C:7E:43:94:3B:E5:43:61:FF:14:F1:1A:CC
             SHA256: 32:71:6C:1E:1F:F6:23:01:66:81:92:36:C8:6F:E3:8D:5B:32:C4:F2:10:94:D0:3D:8C:07:5B:91:7A:59:B2:56
             Signature algorithm name: SHA256withRSA
             Version: 3
    
    Extensions:
    
    \#1: ObjectId: 2.5.29.14 Criticality=false
    SubjectKeyIdentifier [
    KeyIdentifier [
    0000: 06 91 44 93 93 46 D0 EE   A9 B3 9C A6 6C 1A BD D4  ..D..F......l...
    0010: E3 EA 74 74                                        ..tt
    ]
    ]
    
    
    
    *******************************************
    *******************************************
    
    
    Alias name: aliascrt
    Creation date: Mar 10, 2017
    Entry type: trustedCertEntry
    
    Owner: CN=michael, OU=liumiaocn, O=ngo, L=dalian, ST=liaoning, C=CN
    Issuer: CN=michael, OU=liumiaocn, O=ngo, L=dalian, ST=liaoning, C=CN
    Serial number: 58700a1
    Valid from: Fri Mar 10 17:46:00 EST 2017 until: Sun Apr 09 18:46:00 EDT 2017
    Certificate fingerprints:
             MD5:  C9:88:B5:3E:62:F1:31:4D:8B:81:9C:45:90:F1:0F:CF
             SHA1: 59:C9:D3:3F:07:80:73:7C:7E:43:94:3B:E5:43:61:FF:14:F1:1A:CC
             SHA256: 32:71:6C:1E:1F:F6:23:01:66:81:92:36:C8:6F:E3:8D:5B:32:C4:F2:10:94:D0:3D:8C:07:5B:91:7A:59:B2:56
             Signature algorithm name: SHA256withRSA
             Version: 3
    
    Extensions:
    
    \#1: ObjectId: 2.5.29.14 Criticality=false
    SubjectKeyIdentifier [
    KeyIdentifier [
    0000: 06 91 44 93 93 46 D0 EE   A9 B3 9C A6 6C 1A BD D4  ..D..F......l...
    0010: E3 EA 74 74                                        ..tt
    ]
    ]
    
    
    
    *******************************************
    *******************************************
    

    [root@liumiaocn tmp]#

    证书删除

    从keystore中删除证书,使用如下命令即可

    keytool -delete -alias aliascrt -keystore /tmp/kstore.keystore -storepass init234
    

    执行参照

    [root@liumiaocn tmp]# keytool -delete -alias aliascrt -keystore /tmp/kstore.keystore -storepass init234
    [root@liumiaocn tmp]#
    

    事后确认

    [root@liumiaocn tmp]# keytool -list  -v -keystore /tmp/kstore.keystore -storepass init234
    
    Keystore type: JKS
    Keystore provider: SUN
    
    Your keystore contains 1 entry
    
    Alias name: kstore
    Creation date: Mar 10, 2017
    Entry type: PrivateKeyEntry
    Certificate chain length: 1
    Certificate[1]:
    Owner: CN=michael, OU=liumiaocn, O=ngo, L=dalian, ST=liaoning, C=CN
    Issuer: CN=michael, OU=liumiaocn, O=ngo, L=dalian, ST=liaoning, C=CN
    Serial number: 58700a1
    Valid from: Fri Mar 10 17:46:00 EST 2017 until: Sun Apr 09 18:46:00 EDT 2017
    Certificate fingerprints:
             MD5:  C9:88:B5:3E:62:F1:31:4D:8B:81:9C:45:90:F1:0F:CF
             SHA1: 59:C9:D3:3F:07:80:73:7C:7E:43:94:3B:E5:43:61:FF:14:F1:1A:CC
             SHA256: 32:71:6C:1E:1F:F6:23:01:66:81:92:36:C8:6F:E3:8D:5B:32:C4:F2:10:94:D0:3D:8C:07:5B:91:7A:59:B2:56
             Signature algorithm name: SHA256withRSA
             Version: 3
    
    Extensions:
    
    #1: ObjectId: 2.5.29.14 Criticality=false
    SubjectKeyIdentifier [
    KeyIdentifier [
    0000: 06 91 44 93 93 46 D0 EE   A9 B3 9C A6 6C 1A BD D4  ..D..F......l...
    0010: E3 EA 74 74                                        ..tt
    ]
    ]
    
    
    
    *******************************************
    *******************************************
    
    
    [root@liumiaocn tmp]#
    

    可以看到,刚刚加入的证书已经被删除。

    总结

    keytool作为JDK提供的证书管理工具,使用它可以很方便的管理DSA/RSA等流行加密方式的证书,而这些在Web服务器认证以及容器私库管理方面都有着很多应用。

    展开全文
  • keytool 的使用

    2020-09-03 10:10:38
    -keyalg:指定密钥的加密算法
  • Java证书工具keytool用法总结

    千次阅读 2019-02-18 23:38:40
    Keytool简单介绍 keytool 是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。在JDK 1.4以后的版本...
  • Keytool命令详解

    万次阅读 2017-09-06 17:46:21
    以前用过几次这个东东,但每次都重新查询一次。本文原始出处是这里 。 -----------... ,Keytool 将密钥(key)和证书(certificates)存在一个称为keystore的文件中 在keystore里,包含两种数据:  密钥
  • KeyTool简介

    千次阅读 2018-07-14 17:20:11
    1. keytool 是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。 2. Keystore:keytool将密钥和...
  • keyTool详解

    千次阅读 2018-08-15 10:22:22
    Keytool 是一个Java 数据证书的管理工具 ,Keytool 将密钥(key)和证书(certificates)存在一个称为keystore的文件中 在keystore里,包含两种数据:  (1)密钥实体(Key entity)——密钥(secret key)又或者是...
  • keytool 使用说明

    2019-08-14 15:08:44
    本文内容只是一个简单的笔记,内容主要来自于 man keytool 命令 Android 开发中,需要对应用进行签名,一般签名信息存储在一个 keystore 文件中,这个文件可以用 keytool 进行读写。以下介绍 keystore 的常见用法。...
  • keytool 工具使用总结

    千次阅读 2018-09-07 10:52:40
    keytool 简介 该keytool命令是密钥和证书管理实用程序。它使用户能够使用数字签名管理他们自己的公钥/私钥对和相关证书,以用于自我认证(用户向其他用户和服务认证自己)或数据完整性和认证服务。 该keytool命令...
  • keytool生成RSA证书

    千次阅读 2018-10-25 18:25:44
    生成RSA公钥私钥不仅可以通过代码去进行实现,还可以通过keytool去创建证书,进而用代码去读取证书中的公钥和私钥去进行加解密的操作。 1.keytool生成RSA证书  1.管理员身份进入dos环境 运行 keytool -genkey ...
  • 学习生成证书的过程,我们会用到 连个工具:openssl、keytool 进一步了解,我们会知道,这两个工具,单独也可以生成证书。 那他们生成的证书区别是什么? 数字证书管理工具openssl和keytool的区别 一句话:keytool...
  • Android签名工具(keytool

    热门讨论 2020-07-28 23:33:10
    keytool -genkey -alias ChangeBackgroundWid get.keystore -keyalg RSA -validity 20000 -eystore ChangeBackgroundWidget.keystore 上面的命令中间不换行,按下“Enter”键,并根据提示填写相关信息,详细信息如下...
  • 本文主要介绍keytool CA签名SSL证书(收费),点击查看keytool自签名SSL证书(免费)以及私钥签名、公钥验签流程 最近给银行做一个系统,虽说是给行内使用的,但是系统要同时支持内外网方式登录,采用https...
  • Keytool或Keystore使用及证书转换

    万次阅读 2018-03-05 22:52:55
    本文主旨在将keytool的使用还有keystore证书的转换想了解证书的基础知识点击:证书...以及私钥的密码//密钥库中可以存储多条密钥对,alias是密钥对的别名,属于关键字,不允许重复keytool -genkey -alias lhp -keya...
  • keytool生成证书的方法

    千次阅读 2018-08-16 17:54:38
    我们不去深究为什么会有这样的错误,笔者今天主要讲的是关于keytool的相关知识,因为了解这个,你就会知道上面的问题是为什么了。 2. keytool介绍 笔者查找了关于keytool的相关解释,网站上给出的定义...
  • 使用keytool生成证书和秘钥

    千次阅读 2016-01-02 16:19:32
    使用keytool生成证书和秘钥 Java 中的 keytool.exe (位于 JDK\Bin 目录下)可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和...
  • Keytool是用于管理密钥和证书的工具,位于%JAVA_HOME%/bin目录。 使用JDK的keytool工具 1.keytool在jdk的bin目录下 查找jdk目录参考https://blog.csdn.net/PENG_Dorothy/article/details/106868109 2.打开keytool...
1 2 3 4 5 ... 20
收藏数 29,347
精华内容 11,738
关键字:

keytool