是什么

Keytool是一个Java数据证书的管理工具 ,Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中。 在keystore里,包含两种数据:

  1. 密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)
  2. 可信任的证书实体(trusted certificate entries)——只包含公钥

Keystore可以简单理解为一个存放应用签名的文件。

为什么

KeyStore:从名字上来讲,我们可以称它为秘钥库,是为了保护我们自己开发的应用的。
1.通过秘钥,可以证明这个APP是由某个个人或者企业开发的。在生成KeyStore的时候,开发者会录入自己姓名、单位、组织、所在城市、省份、国家代码等信息。
2.通过秘钥,可以对后续APP进行升级更新,如果不是用发布APP时使用的秘钥打包的APK用于升级,会被当做是另外一个APK,导致对当前发布的应用无法升级(keyStore丢了就不能升级了)。

keystore是给开发者用的,为了防篡改和盗版,同一个应用不同的签名就会安装不同的app,不会覆盖安装。

大家也许会问了,那如果没有签名会导致什么问题呢?

如果自己做了一个和王者荣耀同一个名字同一个Icon的App,当用户下载这个盗版App安装好之后就会将本地的正版王者荣耀App给覆盖掉,这样当然是开发者不允许的,所以就需要一个独一无二的签名,这样别人就算和自己的App名字一样,也不用担心被覆盖。

怎么做

Java 中的 keytool.exe (位于 JDK\Bin 目录下)可以用来创建数字证书。

JDK中keytool常用命令:

-genkey 在用户主目录中创建一个默认文件”.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 abc.crt
-keypasswd 修改密钥库中指定条目口令 keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new 新密码 -storepass keystore密码 -keystore sage
-storepasswd 修改keystore口令 keytool -storepasswd -keystore e:\abc.keystore(需修改口令的keystore) -storepass 123456(原始密码) -new abc(新密码)

-import 将已签名数字证书导入密钥库 keytool -import -alias 指定导入条目的别名 -keystore 指定keystore -file 需导入的证书

创建keystore文件,生成一个名为 abc.keystore 的文件

C:\Program Files\Java\jdk1.8.0_91\bin> keytool -genkey -alias abc-keystore abc.keystore -keyalg RSA

检查一个keystore:

C:\Program Files\Java\jdk1.8.0_91\bin> keytool -v -list -keystore ***.keystore

KeyStore简介和使用相关推荐

  1. Android KeyStore密钥存储

    KeyStore简介 利用 Android KeyStore System,您可以在容器中存储加密密钥,从而提高从设备中提取密钥的难度.在密钥进入密钥库后,可以将它们用于加密操作,而密钥材料仍不可导出 ...

  2. Android Studio 2.3 打包apk

    LZ-Says:写代码写得突然蒙比了,来来回回折腾了小2个月,乱啊~ 前言 话说从Eclipse转化到Android Studio后,一直都没打个包,发个版本,今天想提交测试打个版本,丫的一看,和Ec ...

  3. Java密码体系结构简介:Java Cryptography Architecture (JCA) Reference Guide

    来自Java官方的文档,作备忘使用. 简介: Java平台非常强调安全性,包括语言安全,密码学,公钥基础设施,认证,安全通信和访问控制. JCA是平台的一个主要部分,包含一个"提供者&quo ...

  4. Java Keystore教程

    目录 1.简介 2. SSL及其工作方式 3.私钥 4.公开证书 5.根证书 6.证书颁发机构 7.证书链 8.使用Java keytool的密钥库 9.密钥库命令 10.在Apache Tomcat ...

  5. Elastic Stack简介

    Elastic Stack简介 如果你没有听说过Elastic Stack,那你一定听说过ELK,实际上ELK是三款软件的简称,分别是Elasticsearch. Logstash.Kibana组成, ...

  6. Azkaban简介及安装教程

    前言: 最近在实际工作中玩到了Azkaban,虽然之前有简单的接触,但是真正用到的时候,才能体会到这个工具的实用性有多强.下面就写个系列文章来记录下azkaban从简介及安装配置再到简单使用的一个过程 ...

  7. ReactNative简介、开发环境、调试、常用组件、useState状态、FlatList组件、SectionList组件、Platform 模块、定义样式、图片组件、触摸事件、打包apk发布版

    ReactNative简介: ReactNative是基于React语法来进行开发移动app的框架: ReactNative中提供了移动端专用的一些组件,我们要使用ReactNative固有的组件代替 ...

  8. CAS单点登陆原理简介及环境搭建

    前言 最近这几天在研究CAS 今天终于在本地部署成功了 今天写一篇文章记录下 原理简介 SSO单点登录 在多个相互信任的系统中,用户只需要登录一次就可以访问其他受信任的系统. 新浪微博与新浪博客是相互 ...

  9. Android学习笔记---HttpClient入门,使用方法,及简介

    HttpClient入门 发华 金, 软件工程师,IBM CSDL, EMC 金发华是一名工作在 IBM CSDL 的软件工程师.他喜欢钻研各种新的技术,在 Java 网络开发和 Web 开发方面颇有 ...

最新文章

  1. 机器学习:分类器介绍
  2. 天玑720支持鸿蒙系统吗,天玑720属于骁龙多少 天玑720处理器相当于骁龙几
  3. android获取ro._修改Android序列号(Serial Number)
  4. 缓存服务的更新策略有哪些?
  5. java零基础Ⅲ-- 8.算法优化体验课-骑士周游问题
  6. uniwebview按钮被无形遮挡问题
  7. project sms / BSS / OSS / ESS / dianxin / youbian / iccid / puk / pin
  8. 深入理解Binder机制
  9. Linux的mysql主从配置
  10. 网渲显示服务器错误,【渲染服务】渲染失败的几种原因
  11. 【JS】388- 深入了解强大的 ES6 「 ... 」 运算符
  12. 联想服务器修改显存,如何调整用于显卡的共享内存
  13. MCD12Q1数据处理教程——基于HEG、ArcGIS和ENVI
  14. 程序员常见10大口头禅
  15. LeetCode题目笔记——779. 第K个语法符号,从超时到0ms(bushi)
  16. 台达编码器型号含义_台达光学式旋转编码器
  17. java二面烩面什么问题_小米Java面试题,一面二面面经分享
  18. 选择什么样的思想,就会有什么样的结局
  19. 有哪些经典的企业管理书籍值得推荐?
  20. PHP语法糖->,::和=>

热门文章

  1. 经典干货 | 淘宝直播在双11的互动实践
  2. android P 小米八,weview闪屏问题解决
  3. 全球低价智能手机需求强劲 中国品牌崭露头角
  4. C#复习(十五)事件一_该用户还没想到昵称_新浪博客
  5. 【疯壳·ARM功能手机开发教程1】开发板上电教程
  6. 数据结构与算法书籍、视频、项目、网站、刷题技巧推荐(2021 年持续更新)......
  7. “私厨”会代表新生活方式的到来吗?初创公司“爱大厨”就想派厨师上门为忙碌的人类做菜 | 36氪...
  8. python学习笔记之三:字典,当索引不好用时
  9. vue全家桶是指什么?有哪些东西?
  10. flowable php,flowable demo