JDK的KeyTool和KeyStore等加密相关
Keytool是一个有效的安全钥匙和证书的管理工具.
Java 中的 keytool.exe (位于JDK\Bin下)可以用来创建数字证书,所有的数字证书是以一条一条(用别名区别,不区分大小)地存储在证书库(keystore|密钥库)中,证书库中的一条数字证书包含该证书的私钥,公钥, 以及对应的信息。证书库中的一条证书可以导出数字证书文件, 但导出的数字证书文件只包括主体信息和对应的公钥(不含私钥)。
Keytool把钥匙和证书储存到keystore. keystore默认以文件形式保存, 它有一个访问保护密码.
关于证书的几个概念:
证书是一个实体的数字签名, 还包含这个实体的公钥. 实体是你想信任的东西, 可以是一个人, 一个组织, 一个程序, 一台计算机.
公钥:是一个详细的实体的数字关联,并有意让所有想同这个实体发生信任关系的其他实体知道. 公钥用来检验签名.
数字签名:是实体用私钥签名(加密)自己的实体信息后得到的数据. 这条数据可以用实体的公钥来检验签名(解密)以鉴别实体的身份.
私钥:是一些数字,私钥和公钥组成公钥加密系统的钥匙对. 公钥用来加密数据,私钥用来计算签名. 公钥加密的信息只能由私钥解密,私钥签名的信息只能由公钥检验。
如下命令生成一个自签名的证书:
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的自签名证书,证书的密钥对的密码为654321,证书中实体信息为
"CN=fingki,OU=server,O=server,L=bj,ST=bj,C=CN",存储在名为myCALib的keystore中(如果没有将自动生成一个),这个keystore的密码为123456,密钥对产生的算法指定为RSA,有效期为10年。
KeyTool使用举例
1.生成密钥对,修改密码
keytool -genkey -alias duke -keypass dukekeypasswd
这行命令的作用是产生一个新的钥匙对.其中duke为别名,dukekeypasswd为duke别名的密码.
如果你想修改密码, 可以用:
keytool -keypasswd -alias duke -keypass dukekeypasswd(旧) -new newpass(新)
将旧密码dukekeypasswd改为newpass.
Keytool -keypasswd -alias myCA -keypass 654321 -new newpass -storepass 123456 -keystore myCALib
更改证书库的密码
keytool -storepasswd -new 123456 -storepass 789012 -keystore truststore .其中-storepass指定原密码,-new指定新密码。
2.检查keystore
keytool -list -v -keystore keystore
Enter keystore password: your password(输入密码)
3.输出
输出keystore的条目duke到文件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文件中. 该文件包含证书主体的信息及
证书的公钥, 但不包括私钥, 可以公开。
keytool -export -alias myCA -file myCA.cer -keystore myCALib -storepass 123456 -rfc
从证书库myCALib中将别名为myCA的证书导出到证书文件myCA.cer中。(其中-storepass指定keystore的密码,-rfc指定以可查看编码的方式输出,可省略)。
4.导入
导入证书到truststore:
keytool -import -alias dukecert -file testkey -keystore truststore
Enter keystore password: your new password(输入truststore新密码)
keytool -import -alias RapaServer -file Rapa.cert -keystore cacerts
向Java默认的证书库cacerts导入Rapa.cert
keytool -import -alias myCA -file myCA.cer -keystore truststore
如果没有名为truststore的keystore,将自动创建, 将会提示输入keystore的密码
5.删除keystore条目
keytool -delete -alias RapaServer -keystore d2aApplet.keystore
删除d2aApplet.keystore中的RapaServer这一条证书。
keytool -delete -alias myCA -keystore myCALib
6.通过证书文件查看证书信息
keytool -printcert -file myCA.cer
JDK的KeyTool和KeyStore等加密相关的更多相关文章
- JAVA调用 keytool 生成keystore 和 cer 证书
keytool是一个Java数据证书的管理工具, keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里, 包含两种数据: 密钥实体( ...
- tomcat7+jdk的keytool生成证书 配置https
目前只会使用jdk的keytool来生成证书.本文仅介绍这种方法. 1Windows下: 1.1 生成keystore文件及导出证书 打开控制台: 运行: %JAVA_HOME%\bin\keytoo ...
- java 调用 keytool 生成keystore 和 cer 证书
keytool是一个Java数据证书的管理工具, keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里, 包含两种数据:密钥实体(K ...
- 使用jdk中keytool生成证书
-genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥.私钥和证书 -alias 产生别名 -keystor ...
- keytool创建Keystore和Trustsotre文件
一.生成一个含有一个私钥的keystore文件 user@ae01:~$ keytool -genkey -keystore keystore -alias jetty-azkaban -keyalg ...
- 用keytool创建Keystore和Trustsotre文件只需五步
用keytool创建Keystore和Trustsotre文件 JSSE使用Truststore和Keystore文件来提供客户端和服务器之间的安全数据传输.keytool是一个工具可以用来创建包含公 ...
- python pyd 加密相关
Dockerfile RUN 同时执行多条命令 Dokcerfile中的命令每执行一条即产生一个新的镜像,当前命令总是在最新的镜像上执行.如下Dockerfile: RUN cd /usr/share ...
- ios开发Base64编码以及加密相关学习
一:.Base64补充 ```objc 1.Base64简单说明 描述:Base64可以成为密码学的基石,非常重要. 特点:可以将任意的二进制数据进行Base64编码 结果:所有的数据都能被编码为并只 ...
- 使用jdk的keytool 生成CA证书的方法
一.CA证书生成设置总共分为以下5步: 步骤: 1.根据java的keytool生成CA根证书,放在服务器 2.根据服务器CA根证书导出客户端证书 3.tomcat增加SSL配置 4.客户端IE浏览器 ...
随机推荐
- 软工网络15团队作业1——团队组队&展示
一.团队展示 1.队名:想不出队名 2.队员学号(标记组长) 201521123064 郭炜埕 201521123066 郑晓丽 201521123067 廖怡洁 201521123068 包梦榕 2 ...
- HDU - 2732 Leapin' Lizards (拆点最大流)
题意:有N*M的矩形,每个格点有一个柱子,每根柱子有高度c,允许蜥蜴经过这根柱子c次,开始有一些蜥蜴在某些柱子上,它们要跳出这个矩形,每步最大能跳d个单位,求最少有多少蜥蜴不能跳出这个矩形. 分析:转 ...
- HDU 3416 Marriage Match IV (Dijkstra+最大流)
题意:N个点M条边的有向图,给定起点S和终点T,求每条边都不重复的S-->T的最短路有多少条. 分析:首先第一步需要找出所有可能最短路上的边.怎么高效地求出呢?可以这样:先对起点S,跑出最短路: ...
- 一道仅有7人通过的超5星微软比赛题目-------解题思路&优秀代码分享,邀你来“找茬儿”
6月23日英雄会平台发布了一道难度为超5星的微软比赛题目,截止活动结束共有300多名编程爱好者参与线上答题,而最终通过者仅有7人,通过率仅为2%.为什么成绩如此出人意料?是因为题目的英文描述难以理解? ...
- centos上安装redmine
1.下载bitnami的redmine安装包 https://bitnami.com/stack/redmine/installer 2.安装remine ./bitnami-redmine-3.3. ...
- javascript 基本数据类型、引用数据类型
阅读目录 数据类型 两种访问方式 两种类型复制 函数参数的传递 两种变量类型检测 回到目录 数据类型 1. ECMAScript变量包含两种不同类型的值:基本类型值.引用类型值: 2. 基 ...
- JS正则表达式从入门到入土(8)—— REGEXP对象属性
对象属性 常用对象属性主要有以下几种: 1.global: 是否全文搜索,默认false 2.ignore case:是否大小写敏感,默认是false 3.multiline:多行搜索,默认值是fal ...
- 通过自动回复机器人学Mybatis笔记:接口式编程
[接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...
- Linux学习笔记之阿里云ECS部署LAMP环境
LAMP指Linux+Apache+MySQL/MariaDB+Perl/PHP/Python,是一组常用来搭建动态网站或者服务器的开源软件.它们本身都是各自独立的程序,但是因为常被放在一起使用,拥有 ...
- Jquery中val、text、html的区别
html就是你可以添加像<a></a>.<p></p>等标记text只能写文本如果写了上面的标记则会以文本形式输出val是属性,只有有该属性的对象才能调 ...