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浏览器 ...
随机推荐
- XDU 1140 寻找万神(字符串匹配)
学会strstr的使用 strstr(str1,str2)函数用于判断字符串str2是否是str1的子串.如果是,则该函数返回str2在str1中首次出现的地址:否则,返回NULL. #include ...
- 将jar包发布到nexus仓库
版本的快速迭代不适合release发布到仓库,snapshot方便版本的快速迭代. 1.pom改为snapshot <dependency> <groupId>com.sf.c ...
- C++与C混编
C++与C混编 本案例通过实现一个简单的UDP服务器来说明C++与C的混合编程问题 C代码 通过C代码来对UDP服务器的创建,监听进行封装 udp.c文件 #include <sys/types ...
- RenderScript多输入参数
https://stackoverflow.com/questions/20783830/how-to-use-renderscript-with-multiple-input-allocations ...
- Linux入门之--Linux文件系统结构
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
- excel日期插件
效果图 Private Sub DTPicker1_Click() ActiveCell.Value = DTPicker1.Value DTPicker1.Visible = False End S ...
- MR案例:外连接代码实现
[外连接]是在[内连接]的基础上稍微修改即可.具体HQL语句详见Hive查询Join package join.map; import java.io.IOException; import java ...
- 100个gdb调试技巧
找到的一个有参考价值的关于GDB调试的站点:https://gitlore.com/subject/15
- Windows平台上Caffe的训练与学习方法(以数据库CIFAR-10为例)
Windows平台上Caffe的训练与学习方法(以数据库CIFAR-10为例) 在完成winodws平台上的caffe环境的搭建之后,亟待掌握的就是如何在caffe中进行训练与学习,下面将进行简单的介 ...
- Maven取消编译自动测试
Maven取消编译自动测试 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins&l ...