一、前言
这篇文章是本人对于证书、签名、密钥的理解,可能有错误的地方,望指正。
这篇文章回答了什么是.jks(JAVA key store)?Alias(别名)又是什么?jks和别名的password(密码)又有什么不为人知的秘密?
二、key(密钥)相关的基本概念
通常所说的密钥加密是采用的是非对称加密方式。即,每个key都含有一对密钥和一个hash值(指纹),一对密钥也就是公钥和私钥。公钥可以分发出去,私钥自己保密。用公钥加密的内容,只能用私钥解出;用私钥加密的内容,只能用公钥解出。
三、解决开发中的相关问题
1、什么是.jks文件?
.jks文件是密钥库格式的文件,文件中保存了一个密钥库,密钥库中又保存了多个密钥。
每个密钥中包含了两条数据:
(1)密钥实体(Key entity)— 密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)
(2)可信任的证书实体(trusted certificate entries)— 只包含公钥
因此,我们平时说的证书也就是公钥,密钥也就是私钥,这里翻译可能有点乱,看了好多资料也没个准确的定义,重点是意会。
2、Alias(别名)又是什么?
别名则是这条密钥的名字,用来人为地区别分不同的密钥,密钥是字符,也不太好背。
3、jks和别名的password(密码)又有什么不为人知的秘密?
jks的密码就是密钥库的密码,拥有这个密码就可以得到这个密钥库里所有密钥的公钥。别名的密码就是私钥的密码,拥有这个密码就可以得到私钥的密码,一般这个密码是开发者自己保留。
4、APK的签名机制有什么作用?
(1)APK的升级安装:APK如果使用一个key,发布时另一个key的相同的APK文件将无法安装或覆盖老的版本,这样可以防止你已安装的应用被恶意的第三方覆盖或替换掉。
(2)功能和数据共享:Android提供了基于签名的权限机制,一个APK可以向另一个以相同证书签名的APK开放自己的功能和实现数据共享。