Keytool 是一个有效的安全钥匙和证书的管理工具. 
Java 中的 keytool.exe (位于 JDK\Bin 目录下)可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息。证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥。 
Keytool 把钥匙和证书储存到一个keystore.默任的实现keystore的是一个文件.它用一个密码保护钥匙. 
(2) 
关于证书的几个概念: 
    一个证书是一个实体的数字签名,还包含这个实体的公共钥匙值. 
        公共钥匙 :是一个详细的实体的数字关联,并有意让所有想同这个实体发生信任关系的其他实体知道.公共钥匙用来检验签名; 
        数字签名:是实体信息用实体的私有钥匙签名(加密)后的数据.这条数据可以用这个实体的公共钥匙来检验签名(解密)出实体信息以鉴别实体的身份;        
        签名:用实体私有钥匙加密某些消息,从而得到加密数据; 
        私有钥匙:是一些数字,私有和公共钥匙存在所有用公共钥匙加密的系统的钥匙对中.公共钥匙用来加密数据,私有钥匙用来计算签名.公钥加密的消息只能用私钥解密,私钥签名的消息只能用公钥检验签名。 
        实体:一个实体可以是一个人,一个组织,一个程序,一台计算机,一个商业,一个银行,或其他你想信任的东西. 
    实际上,我们用[1]中的命令已经生成了一个自签名的证书,没有指定的参数都使用的是默认值。 
    我们也可以用如下命令生成一个自签名的证书: 
        keytool -genkey -dname "CN=fingki,OU=server,O=server,L=bj,ST=bj,C=CN" -alias myCA -keyalg RSA -keysize 1024 -keystore myCALib -keypass 654321 -storepass 123456 -validity 3650 
        这条命令将生成一个别名为myCA的自签名证书,证书的keypair的密码为654321,证书中实体信息为 "CN=fingki,OU=server,O=server,L=bj,ST=bj,C=CN",存储在名为myCALib的keystore中(如果没有将自动生成一个),这个keystore的密码为123456,密钥对产生的算法指定为RSA,有效期为10年。

1、查看keystore的信息
keytool -list -v -keystore (xxxx.keystore)路径

2、修改别名
keytool -changealias -keystore gdmsaes-app.keystore -alias androiddebugkey -destalias gdmsaecappkey
gdmsaes-app.keystore为当前的keystore文件
androiddebugkey为当前keystore文件的别名
gdmsaecappkey修改之后的别名

3、 修改alias的密码:这一步执行后会提示输入keystore密码,alias密码,然后提示输入新的alias密码
keytool -keypasswd -keystore my.keystore -alias androiddebugkey

4、证书条目的删除
keytool -delete -alias app -keystore gsmsaec-app.keystore
删除gsmsaec-app.keystore文件中的名字为:app别名的 条目

[2] 
详细分析如下: 
Keystore的别名: 
所有的keystore入口(钥匙和信任证书入口)是通过唯一的别名访问.别名是不区分大小写的.如别名Hugo和 
hugo指向同一个keystore入口. 
可以在加一个入口到keystore的时候使用-genkey参数来产生一个钥匙对(公共钥匙和私有钥匙)时指定别 
名.也可以用-import参数加一个证书或证书链到信任证书. 
如: 
1. 
keytool -genkey -alias duke -keypass dukekeypasswd 
其中duke为别名,dukekeypasswd为duke别名的密码.这行命令的作用是产生一个新的公共/私有钥匙对. 
假如你想修改密码,可以用: 
keytool -keypasswd -alias duke -keypass dukekeypasswd -new newpass 
将旧密码dukekeypasswd改为newpass. 
可以用-keystore指定其名时,将产生指定的keystore. 
2. 
检查一个keystore: 
keytool -list -v -keystore keystore 
Enter keystore password:your password(输入密码) 
3.输出keystore到一个文件:testkey: 
keytool -export -alias duke -keystore keystore -rfc -file testkey 
系统输出: 
Enter keystore password:your password(输入密码) 
Certificate stored in file 
例如:keytool -export -keystore monitor.keystore -alias monitor -file monitor.cer 
将把证书库 monitor.keystore 中的别名为 monitor 的证书导出到 monitor.cer 证书文件中,它包含证书主体的信息及证书的公钥,不包括私钥,可以公开。 
4.输入证书到一个新的truststore: 
keytool -import -alias dukecert -file testkey -keystore truststore 
Enter keystore password:your new password.(输入truststore新密码) 
将keystore导入证书中这里向Java默认的证书 cacerts导入Rapa.cert 
keytool -import -alias RapaServer -keystore cacerts -file Rapa.cert -keystore cacerts 
5.证书条目的删除 
keytool的命令行参数 -delete 可以删除密钥库中的条目,如: keytool -delete -alias RapaServer -keystore d2aApplet.keystore ,这条命令将 d2aApplet.keystore 中的 RapaServer 这一条证书删除了。

7,将证书导出到证书文件 
    keytool -export -alias myCA -file myCA.cer -keystore myCALib -storepass 123456 -rfc 
    使用该命令从名为myCALib的keystore中,把别名为myCA的证书导出到证书文件myCA.cer中。(其中-storepass指定keystore的密码,-rfc指定以可查看编码的方式输出,可省略)。 
8,通过证书文件查看证书信息 
    keytool -printcert -file myCA.cer 
9,密钥库中证书条目口令的修改 
    Keytool -keypasswd -alias myCA -keypass 654321 -new newpass -storepass 123456 -keystore myCALib 
10,删除密钥库中的证书条目 
    keytool -delete -alias myCA -keystore myCALib 
11,把一个证书文件导入到指定的密钥库 
    keytool -import -alias myCA -file myCA.cer -keystore truststore 
    (如果没有名为truststore的keystore,将自动创建,将会提示输入keystore的密码) 
12,更改密钥库的密码 
    keytool -storepasswd -new 123456  -storepass 789012 -keystore truststore 
    其中-storepass指定原密码,-new指定新密码。 
[3] 
自己的实例 
(1)用法总结: 
1. 
keystore好像一个数据库.每种操作,都要先指定keystore名与密码,以及操作的对象别名如: 
..... -alias AAA -keystore jServer.keystore -storepass 123456 
2. 
操作的一般格式: 
keytool + 操作类型[-genkey,-list -v,-printcert -file,-import -flie,-export -file,-delete,- 
keypasswd -new,-storepasswd -new] + 再加上上面的格式. 
(2)实例 
C:\keytool>keytool -genkey -alias jason -keystore jServer.keystore -keyalg RSA 
输入keystore密码:  1234 
Keystore 密码太短 -至少必须为6个字符 
输入keystore密码:  123456 
您的名字与姓氏是什么? 
  [Unknown]:  huang 
您的组织单位名称是什么? 
  [Unknown]:  access 
您的组织名称是什么? 
  [Unknown]:  access 
您所在的城市或区域名称是什么? 
  [Unknown]:  sz 
您所在的州或省份名称是什么? 
  [Unknown]:  gd 
该单位的两字母国家代码是什么 
  [Unknown]:  china 
CN=huang, OU=access, O=access, L=sz, ST=gd, C=china 正确吗? 
  [否]:  y 
输入<jason>的主密码 
        (如果和 keystore 密码相同,按回车):  74123 
主密码太短 -至少必须为 6 个字符 
输入<jason>的主密码 
        (如果和 keystore 密码相同,按回车):  456789 
C:\keytool>keytool -list -v -keystore jServer.keystore 
输入keystore密码:  123456 
Keystore 类型: jks 
Keystore 提供者: SUN 
您的 keystore 包含 1 输入 
别名名称: jason 
创建日期: 2009-6-24 
输入类型:KeyEntry 
认证链长度: 1 
认证 [1]: 
Owner: CN=huang, OU=access, O=access, L=sz, ST=gd, C=china 
发照者: CN=huang, OU=access, O=access, L=sz, ST=gd, C=china 
序号: 4a40fd0f 
有效期间: Wed Jun 24 00:04:31 CST 2009 至: Tue Sep 22 00:04:31 CST 2009 
认证指纹: 
         MD5:  4A:67:84:5E:C2:5E:3E:16:05:1D:A9:F4:72:79:13:48 
         SHA1: 01:4A:5A:76:8E:1B:00:D3:5E:FD:CA:3A:D0:52:4E:57:BA:03:26:B9

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

C:\keytool>keytool -export -alias jason -keystore jServer.keystore -rfc -file jasonfile 
输入keystore密码:  123456 
保存在文件中的认证 <jasonfile> 
C:\keytool>keytool -export -alias jason -keystore jServer.keystore -storepass 123456 -rfc -f 
ile jasonfile2 
保存在文件中的认证 <jasonfile2> 
C:\keytool>keytool -export -alias jason -keystore jServer.keystore -storepass 123456 -rfc -f 
ile jasonfile.cer 
保存在文件中的认证 <jasonfile.cer> 
C:\keytool>keytool -printcert -file jasonfile.cer 
Owner: CN=huang, OU=access, O=access, L=sz, ST=gd, C=china 
发照者: CN=huang, OU=access, O=access, L=sz, ST=gd, C=china 
序号: 4a40fd0f 
有效期间: Wed Jun 24 00:04:31 CST 2009 至: Tue Sep 22 00:04:31 CST 2009 
认证指纹: 
         MD5:  4A:67:84:5E:C2:5E:3E:16:05:1D:A9:F4:72:79:13:48 
         SHA1: 01:4A:5A:76:8E:1B:00:D3:5E:FD:CA:3A:D0:52:4E:57:BA:03:26:B9 
C:\keytool>keytool -keypasswd -alias jason -keypass 456789 -new 20070423 -keystore jServer - 
storepass 123456 
keytool错误: java.lang.Exception: Keystore 文件不存在: jServer 
C:\keytool>keytool -keypasswd -alias jason -keypass 456789 -new 20070423 -keystore jServer.k 
eystore -storepass 123456 
C:\keytool>keytool -list -v -alias jason -storepass 123456 
keytool错误: java.lang.Exception: Keystore 文件不存在: C:\Documents and Settings\Administr 
ator\.keystore 
C:\keytool>keytool -list -v -alias jason -keystore jServer.keystore -storepass 123456 
别名名称: jason 
创建日期: 2009-6-24 
输入类型:KeyEntry 
认证链长度: 1 
认证 [1]: 
Owner: CN=huang, OU=access, O=access, L=sz, ST=gd, C=china 
发照者: CN=huang, OU=access, O=access, L=sz, ST=gd, C=china 
序号: 4a40fd0f 
有效期间: Wed Jun 24 00:04:31 CST 2009 至: Tue Sep 22 00:04:31 CST 2009 
认证指纹: 
         MD5:  4A:67:84:5E:C2:5E:3E:16:05:1D:A9:F4:72:79:13:48 
         SHA1: 01:4A:5A:76:8E:1B:00:D3:5E:FD:CA:3A:D0:52:4E:57:BA:03:26:B9 
C:\keytool>keytool -delete -alias jason -keystore jServer.keystore -storepass 123456 
C:\keytool>keytool -list -v -alias jason -keystore jServer.keystore -storepass 123456 
keytool错误: java.lang.Exception: 别名 <jason> 不存在 
C:\keytool>keytool -import -alias hwj -file jasonfile.cer -keystore jServer.keystore -storep 
ass 123456 
Owner: CN=huang, OU=access, O=access, L=sz, ST=gd, C=china 
发照者: CN=huang, OU=access, O=access, L=sz, ST=gd, C=china 
序号: 4a40fd0f 
有效期间: Wed Jun 24 00:04:31 CST 2009 至: Tue Sep 22 00:04:31 CST 2009 
认证指纹: 
         MD5:  4A:67:84:5E:C2:5E:3E:16:05:1D:A9:F4:72:79:13:48 
         SHA1: 01:4A:5A:76:8E:1B:00:D3:5E:FD:CA:3A:D0:52:4E:57:BA:03:26:B9 
信任这个认证? [否]:  y 
认证已添加至keystore中 
C:\keytool>keytool -list -v -alias jason -keystore jServer.keystore -storepass 123456 
keytool错误: java.lang.Exception: 别名 <jason> 不存在 
C:\keytool>keytool -list -v -alias hwj -keystore jServer.keystore -storepass 123456 
别名名称: hwj 
创建日期: 2009-6-24 
输入类型: trustedCertEntry 
Owner: CN=huang, OU=access, O=access, L=sz, ST=gd, C=china 
发照者: CN=huang, OU=access, O=access, L=sz, ST=gd, C=china 
序号: 4a40fd0f 
有效期间: Wed Jun 24 00:04:31 CST 2009 至: Tue Sep 22 00:04:31 CST 2009 
认证指纹: 
         MD5:  4A:67:84:5E:C2:5E:3E:16:05:1D:A9:F4:72:79:13:48 
         SHA1: 01:4A:5A:76:8E:1B:00:D3:5E:FD:CA:3A:D0:52:4E:57:BA:03:26:B9 
C:\keytool>keytool -storepasswd -new 20070423 -keystore jServer.keystore -storepass 123456

android打包签名介绍的更多相关文章

  1. Android打包签名

    Ⅰ.用jdk和sdk自带工具打包签名 a.把jdk下的keytool.exe和jarsigner.exe所在目录(两个工具在同一目录) 添加到环境变量path 1)新建环境变量package,pack ...

  2. react-native android打包签名release版apk遇到的问题

    在该项目包名时遇到的一个android打包问题,如下 改包名步骤 修改android/app/build.gradle里的applicationId,为新包名,如:com.xxx.yyy.myProj ...

  3. android 打包签名

    1.Eclipse工程中右键工程,弹出选项中选择 android工具 → 生成签名应用包 2.选择需要打包的android项目工程 3.如果已有私钥文件,选择私钥文件 输入密码,如果没有私钥文件见第6 ...

  4. Android 打包签名 从生成keystore到完成签名 -- 转

    首先,我们需要一个keystore,当然已经有了的话就不用这一步了:cmd下:进入到jdk的bin目录,这样的话,android.keystore文件就会生成在这个目录下,签名的时候我们需要这个文件C ...

  5. Android 打包签名 从生成keystore到完成签名

    进入生成工具:  工具帮助:   输入指令并获得结果:   转自: http://www.cppblog.com/fwxjj/archive/2010/05/24/116208.html 首先,我们需 ...

  6. ionic3应用的Android打包签名发布步骤

    版权声明:本文为博主原创文章,未经博主允许不得转载. 当我们的ionic应用开发结束之后,就要开始上线到应用市场,那么Android的发布步骤具体是怎么样的呢? 1)编译 运行命令行: ionic c ...

  7. android打包签名,从生成keystore到完成签名

    输入指令并获得结果:(对应自己的java安装目录) 首先,我们需要一个keystore,当然已经有了的话就不用这一步了:cmd下:进入到jdk的bin目录,这样的话,android.keystore文 ...

  8. 1.9 Android程序签名打包

    本节引言: 本节给大家介绍的是如何将我们的程序打包成Apk文件,并且为我们的Apk签名! 1.什么是签名,有什么用: Android APP都需要我们用一个证书对应用进行数字签名,不然的话是无法安装到 ...

  9. 【Android - 进阶】之代码打包签名与混淆

    代码打包签名 Android Studio为大家集成了代码打包混淆的功能,具体操作流程如下组图所示: 1.点击Android Studio上方工具栏的  Build -> Generate Si ...

随机推荐

  1. C++类的大小

    C++类的大小   一个空类class A{};的大小为什么是1,因为如果不是1,当定义这个类的对象数组时候A objects[5]; objects[0]和objects[1]就在同一个地址处,就无 ...

  2. POJ_2739_Sum_of_Consecutive_Prime_Numbers_(尺取法+素数表)

    描述 http://poj.org/problem?id=2739 多次询问,对于一个给定的n,求有多少组连续的素数,满足连续素数之和为n. Sum of Consecutive Prime Numb ...

  3. VM Depot 新功能:直接通过 Windows Azure 管理门户部署虚拟机

     发布于 2014-05-09 作者 陈 忠岳 想要尝试 VM Depot 上数以百计的各类开源虚拟机,却因为复杂的命令行操作而感到烦恼?微软开放技术想您所想,及时推出 VM Depot 最新功能 ...

  4. android studio class org.bouncycastle.asn1.asn1primitive overrides final method equals

    好吧 上手as 又遇到一个问题: class org.bouncycastle.asn1.asn1primitive overrides final method equals... 项目运行的是后报 ...

  5. PowerDesigner 怎么给 Table Properties 增加注释和默认值

    1.  选中表,右键 2. 选中“comment”, 这个就是列的注释 3.还是这个页面 ,往下有个“default value”, 这个就是你设置的默认值. 4. 这个是怎么设置默认值.

  6. Linux Mono Asp.net 部署方案

    1.Jexus 国内的 官网:http://www.jexus.org 2.Apache 官网:http://mono-project.com/Mod_mono 3.Nginx 官网:http://m ...

  7. 2D游戏编程4—Windows事件

    windows消息传来的参数分解: Message: WM_ACTIVATE Parameterization: fActive      = LOWORD(wParam);       // act ...

  8. HTML5与CSS3权威指南.pdf5

    第9章 通信API 跨文档消息传输 HTML5提供了网页文档之间互相接收与发送信息的功能,不仅同源(域+端口号)的Web网页之间可以互相通信,甚至可以实现跨域通信 想要接受从其他窗口发过来的信息,要对 ...

  9. 【杭州(含嘉兴,绍兴,金华,湖州,义乌)】Uber优步司机奖励政策(2月1日~2月7日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  10. Shell break和continue命令

    在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,像大多数编程语言一样,Shell也使用 break 和 continue 来跳出循环. break命令 break命令允许跳出所有循环(终止 ...