keytool/android签名/温习

学习资料:
1. 名词解释 那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)
2. keytool的用法
3. 使用Keytool工具生成证书Keystore和证书签名请求文件
4. 证书文件编码格式介绍
5. Android签名与认证原理
6. keytool官方学习文档:http://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html

常用证书标准:
- 目前总的来说有三种常用的证书编码格式:X.509证书、PKCS#12证书和PKCS#7证书。
- 本文只讨论的是X.509编码格式。

名词:
1. X.509——由国际电信联盟(ITU-T)制定的数字证书标准。
提供的是一个数据格式,不管你谁要做证书,只要按我的标准,那就是说要按我的数据结构存储你的证书信息。
2. 文件格式——证书有两种格式(二进制文件/Base64编码文件)
3. 扩展名这种东西视其为无物。


所以现在的问题是:
1. keystore中的公钥/私钥/密码是在什么时候使用的?


keytool -genkeypair -alias “test1” -keyalg “RSA” -keystore “test.keystore”

  • -genkeypair:生成一个给对称秘钥。
    • -keyalg:指定用于生成密钥对的算法。[但是这里可以指定的内容都有什么呢?]

二、 X.509证书的结构/证书基本部分
1. 版本号. 标识证书的版本(版本1、版本2或是版本3)。
2. 序列号 标识证书的唯一整数,由证书颁发者分配的本证书的唯一标识符。
3. 签名 用于签证书的算法标识,由对象标识符加上相关的参数组成,用于说明本证书所用的数字签名算法。例如,SHA-1和RSA的对象标识符就用来说明该数字签名是利用RSA对SHA-1杂凑加密。
4. 颁发者 证书颁发者的可识别名(DN)。
5. 有效期 证书有效期的时间段。本字段由”Not Before”和”Not After”两项组成,它们分别由UTC时间或一般的时间表示(在RFC2459中有详细的时间表示规则)。
6. 主体 证书拥有者的可识别名,这个字段必须是非空的,除非你在证书扩展中有别名。
7. 主体公钥信息 主体的公钥(以及算法标识符)。
8. 颁发者唯一标识符 标识符—证书颁发者的唯一标识符,仅在版本2和版本3中有要求,属于可选项。
9. 主体唯一标识符 证书拥有者的唯一标识符,仅在版本2和版本3中有要求,属于可选项。

C:\Users\Tom>keytool -genkeypair -alias "YmTest" -keyalg "RSA" -keystore "YmTest.keystore"
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
  [Unknown]:  qw
您的组织单位名称是什么?
  [Unknown]:  qw
您的组织名称是什么?
  [Unknown]:  qw
您所在的城市或区域名称是什么?
  [Unknown]:  qw
您所在的省/市/自治区名称是什么?
  [Unknown]:  qw
该单位的双字母国家/地区代码是什么?
  [Unknown]:  qw
CN=杨铭, OU=qw, O=qw, L=qw, ST=qw, C=qw是否正确?
  [否]:  y

输入 <YmTest> 的密钥口令
        (如果和密钥库口令相同, 按回车):
再次输入新口令:

  • 收集证书中需要包含的信息(根据X.509标准)
  • 上一步收集的信息做一次

问题是:哈希算法/加密方式——在什么时候真正运用呢?

  • apk —–私钥—–>签名APK
  • 签名apk—-公钥—–>验证apk是否被修改过

文件哈希值—-[算法/私钥(密码)]—->签名文件哈希值
私钥———–公钥


  • 以下算得上是对以上问题的解答了。
  • 主要根据android中的签名文件的理解。
    1. keytool可以生成和维护keystore(秘钥库)
    2. 一个密钥库中可以保存多个密钥,密钥之间的唯一区别就是alias(别名)
    3. 在生成一对密钥的同时我们要输入两个密码。一个密码是密钥库的密码(秘钥库口令),另一个密码是秘钥口令(就是我们的私钥)
    4. 签名的过程1.计算所有文件的摘要哈希放在文件MANIFEST.MF文件中;2.计算MANIFEST.MF摘要的哈希并使用私钥加密放在CERT.SF文件中;3.把公钥和生成密钥对过程中我们录入的发布者信息放在CERT.RSA文件中。
    5. 根据公钥得到私钥在计算上是不可行的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值