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浏览器 ...
随机推荐
- Mybatis 一对一、一对多、多对多
一对一返回resultType <!-- 查询订单关联查询用户信息 resultType --> <select id="findOrderCustom" res ...
- Pythonic 的代码编写方法
1.模块导入 你是不是经常对调用模块时输入一长串模块索引感到头疼?说实在的,数量少的时候或许还可以勉强忍受,一旦程序规模上去了,这也是一项不容小觑的工程 #Bad import urllib.requ ...
- mysql时间戳转换成可读时间格式
代码: SELECT FROM_UNIXTIME(1234567890, '%Y-%m-%d %H:%i:%S') 附:在mysql中,一个时间字段的存储类型是int(11),怎么转化成字符类型,比方 ...
- [转]字符串相似度算法(编辑距离算法 Levenshtein Distance)
转自:http://www.sigvc.org/bbs/forum.php?mod=viewthread&tid=981 http://www.cnblogs.com/ivanyb/archi ...
- mysql批量修改列类型-生成语句
SELECT CONCAT( 'alter table ', table_name, ' MODIFY COLUMN ', column_name, ' float DEFAULT NULL;' ) ...
- python3_ftp文件传输
Python中的ftplib模块 Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件 FTP的工作流程及基本操作可参考协议RFC95 ...
- ThinkPHP5显示数据库字段内容
1.在application文件夹下面的config.php中打开DEBUG. 2.修改tp5/application/index/controller/Index.php内容. <?php n ...
- 20145301实验四 Android开发基础
20145301<Java程序设计>实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.26 15:30- ...
- 20145331《Java程序设计》课程总结
20145331<Java程序设计>课程总结 每周读书笔记链接汇总 •20145331<Java程序设计>第一周学习总结 •20145331<Java程序设计>第二 ...
- Metasploit 学习
知识准备:CCNA/CCNP基础计算机知识框架:操作系统.汇编.数据库.网络.安全 木马.灰鸽子.口令破解.用后门拷贝电脑文件 渗透测试工程师 penetration test engineer &l ...