keytool命令总结
keytool 命令总结
一、创建数字证书
交互模式
使用默认的密钥库.keystore(目录是c: Documents and Setting用户名)和算法(DSA)
keytool -genkey
默认的别名mykey
密钥库中可以存放多个条目(公钥/私钥对和证书),它们在密钥库中以别名(alias)区分。
keytool -genkey -alias mytest -keyalg RSA -keysize 1024 -keystore mykeystore -validity 4000
其中,
-keyalg参数可以指定密钥的算法,如果需要指定密钥的长度,可以再加上-keysize参数。密钥长度默认为1024位,使用DSA算法时,密钥长度必须在512到1024之间,并且是64的整数倍。
-keystore参数可以指定密钥库的名称。密钥库其实是存放密钥和证书的文件,密钥库对应的文件如果不存在自动创建。
-validity参数可以指定所创建的证书有效期是多少天。
非交互模式:
keytool -genkey -dname "CN=tmp, OU=NC, O=Shanghai University, L=ZB, ST=Shanghai, C=CN" -alias tmp -keyalg RSA -keystore mykeystore -keypass wshr.ut -storepass wshr.ut -validity 1000
二、数字证书的显示(从密钥库中)
默认密钥库全部证书信息
keytool -list -v(显示详细信息)
显示指定密钥库指定条目证书信息(包含了发照者(签发者)、序号、有效期、MD5和SHA1认证指纹等额外信息)
keytool -list -v -keystore lfkeystore -alias lf
三、使用Keytool将数字证书导出到文件
将指定的证书从密钥库导出为没编码过的文件。
keytool -export -alias lf -file lf.cer -keystore lfkeystore
四、使用Keytool从文件中显示证书
keytool -printcert -file lf.cer
五、在Windows中从文件显示证书
只要文件名以.cer为后缀,Windows操作系统就可以直接识别。如在Windows中双击lf.cer图标,将出现证书窗口。其中包含了证书的所有者、颁发者、有效期等信息。
点击“详细资料”,可以看到证书的版本、序号、签名算法、颁发者、有效期、主题(即全名)、公钥算法、拇印算法、拇印等信息。其中的拇印即认证指纹。
六、密钥库的维护
使用Keytool删除指定条目
keytool -delete -alias tmp1 -keystore mykeystore
使用Keytool修改指定条目的口令
keytool -keypasswd -alias tmp1 -keystore mykeystore
(非交互模式:keytool -keypasswd -alias tmp1 -keystore mykeystore -storepass wshr.ut -keypass 123456 -new 080302,其中080302为原密码,123456为新密码 )
Java程序列出密钥库所有条目
相关知识点:Java程序读取证书和显示证书指定信息 Java程序实现密钥库的维护
证书生成应用实例:
执行命令前先保证文件夹存在。例如:在c盘建立keystore文件夹
第一步:为服务器生成证书
确定域名:本机中域名解析修改文件是C:WINDOWSsystem32driversetchosts
使用keytool 为 Tomcat 生成证书和密钥库,假定目标机器的域名是“ hepengfei ”, keystore 文件存放在“ C:keystoreserver ”,口令为“ 080302 ”,命令如下:
keytool -genkey -v -keystore C:keystoreserver -alias serverkey -keyalg RSA -validity 3650 -dname "CN=hepengfei,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass 080302 -keypass 080302
生成server.cer安装在客户端解决服务器信任问题:
keytool -export -keystore C:keystoreserver -alias serverkey -file c:keystoreserver.cer -storepass 080302
第二步:为客户端生成证书
(注意:个人证书的生成和使用比较特别,是分开的。先生成p12文件,然后导出cer文件,再将cer文件导入默认类型的keystore(JKS)文件)
这一步是为浏览器生成证书,以便让服务器来验证它。为了能将证书顺利导入至IE 和 Firefox ,证书格式应该是 PKCS12 ,因此,使用如下命令生成:
keytool -genkey -v -keystore C:keystoreuser.p12 -alias MyPC -keyalg RSA -storetype PKCS12 -validity 3650 -dname "CN=MyPC,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass 080302 -keypass 080302
服务器要信任客户端证书,就必须把客户端证书添加为服务器的信任认证。由于不能直接将 PKCS12 格式的证书库导入,我们必须先把客户端证书导出为一个单独的 CER 文件,使用如下命令:
keytool -export -alias MyPC -keystore C:keystoreuser.p12 -storetype PKCS12 -storepass 080302 -rfc -file C:keystoreuser.cer
接着,将C:user.cer导入到服务器的证书库,添加为一个信任证书:
keytool -import -v -file C:keystoreuser.cer -keystore c:keystoreservertrust -alias user -storepass 080302
输入“是”确认完成。
通过list 命令查看:
keytool -list -keystore c:\keystore\servertrust -storepass 080302
也可以考虑将服务器证书和服务器信任证书放到一个密钥库中
第四步:配置Tomcat 服务器
打开Tomcat 根目录下的 /conf/server.xml ,修改如下:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="C:\Java\Tomcat\conf\keystore\server" keystorePass="080302"
truststoreFile="C:\Java\Tomcat\conf\keystore\servertrust" truststorePass="080302"
/>
详细解释见本节最前面介绍。
安装个人证书user.p12(密码:080302)和服务器证书server.cer
到这里启动tomcat,输入 https://hepengfei:8443/Test,就OK了。
如果数字证书注册名称不是127.0.0.1,而是对应的一个hepengfei,
使用ip访问(https://127.0.0.1:8443/Test)可以进入选择数字证书界面(仿真格式):
选择数字证书
名称 颁发商
MyPC MyPC
详细信息 查看证书
确定 取消
注意点:
keytool -list -v -keystore user
使用的库要privateKeyEntry
信任的库要trustedCertEntry
ConvertKeystoreType.java用于转换密钥库类型(PKCS12与JKS格式证书库转换工具)
ssl使用其中四个密钥库
https使用server、servertrust、user.p12(安装到本地计算机)、server.cer四个
生成证书请求:
keytool -certreq -alias tomcat_server -sigalg MD5withRSA -file tomcat_server.csr -keypass 123456 -storepass 123456 -keystore server_keystore
PKCS12
使用Keytool列出pkcs12证书的内容
keytool -rfc -list -keystore tomcat_client.p12 -storetype pkcs12
使用Keytool导出pkcs12证书的公钥证书
keytool -keystore tomcat_client.p12 -storetype pkcs12 -export -alias mypc -file mypc.cer
将已经签名的证书导入密钥库(覆盖原来的公钥)
先导入证书链中的相关信任证书,再导入已经签名的证书(别名与私钥证书别名保持一样)。
keytool命令总结的更多相关文章
- 常用Keytool 命令
常用Keytool 命令Keytool 是一个JAVA环境下的安全钥匙与证书的管理工具.它管理一个存储了私有钥匙和验证相应公共钥匙的与它们相关联的X.509 证书链的keystore(相当一个数据库, ...
- Java自带的keytool命令
使用Java自带的keytool命令,在命令行生成. 1.生成服务器端私钥kserver.keystore文件 keytool -genkey -alias serverkey -validity 1 ...
- Java keytool命令说明
Java keytool命令说明 Java 中的 keytool.exe (位于 JDK\Bin 目录下)可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中 ...
- keytool命令记录
1.生成服务器端私钥kserver.keystore文件 2.根据私钥,导出服务器端安全证书 3.将服务器端证书,导入到客户端的Trust KeyStore中 4.生成客户端私钥kclient.key ...
- 数字证书中keytool命令使用说明
这个命令一般在JDK\jre\lib\security\目录下操作 keytool常用命令 -alias 产生别名 -keystore 指定密钥库的名称(就像数据库一样的证书库,可以 ...
- keytool命令的使用
## 打印所有证书指纹.如果是cacerts,则指本机安装的jdk的key store:如果是一个jks文件,则是其他key store keytool -list -keystore <cac ...
- 常用的Java Keytool Keystore命令
Java keytool是密钥和证书管理工具.它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务.它还允许用户储存他们的 ...
- Android开发:keytool' 不是内部或外部命令 也不是可运行的程序
今天在更改keystore密码的时候,发生了这个问题:keytool' 不是内部或外部命令 也不是可运行的程序. 本来以为很简单觉得的问题,在网上搜索了一大堆答案,都不是我想要的,故在此记录下我的解决 ...
- java keytool证书工具使用小结
java keytool证书工具使用小结 在Security编程中,有几种典型的密码交换信息文件格式: DER-encoded certificate: .cer, .crt PEM-encod ...
随机推荐
- Vue 2.0学习(六)内置指令
基本指令 1.v-cloak v-cloak不需要表达式,它会在Vue实例结束编译时从绑定的HTML元素上移除,经常和CSS的display:none配合使用. <div id="ap ...
- Hibernate 悲观锁(Pessimistic Locking)
在日常开发中并发应该是比较常遇到的业务场景,Hibernate给我们提供了并发操作,接下来简单介绍一下Hibernate悲观控制. 悲观锁:用户其实并不需要花很多精力去担心锁定策略的问题,通常情况下, ...
- [NOI2007]货币兑换 --- DP + 斜率优化(CDQ分治)
[NOI2007]货币兑换 题目描述: 小 Y 最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A 纪念券(以下简称 A 券)和 B 纪念券(以下简称 B 券). 每个持有金券的顾客都有一个 ...
- 使用 Start 屏幕查找 Windows 更新
使用 Start 屏幕查找 Windows 更新 从屏幕右侧边缘扫入,然后点击“搜索”. 如果您正在使用鼠标,请指向屏幕右下角,然后单击“搜索”. 在搜索框内输入 Windows 更新 ...
- MySQL5.6新特性之GTID、多线程复制 - 不知为何
http://www.tuicool.com/articles/yi2aui http://www.cnblogs.com/cenalulu/category/380263.html
- (转)H264通过RTMP发布 V2.0 (Red5 Wowza 测试通过)
直接上代码 // demo.cpp : 定义控制台应用程序的入口点.//#include "stdafx.h"#includeextern "C"{#inclu ...
- FAQ:领域服务和应用服务的职责是什么?
问答部分 问: 领域服务的职责是什么? 答: 夸聚合实例业务逻辑. 没办法合理放到实体中的其它业务逻辑. 问: 领域服务的设计原则是什么? 答: 用来组织业务逻辑. 面向业务逻辑. 细粒度. 内部视图 ...
- Android开发,布局xml文件命名注意事项——不能包含任何大写字母
转自:http://blog.sina.com.cn/s/blog_628b45090100zuit.html 在开发Android应用时,会接触到布局文件,一般在 工程名/res/layout/*. ...
- jenkins错误413 Request Entity Too Large<
jenkins-nginx--sonar1/sonar2
- oracle汉字转拼音
CREATE OR REPLACE FUNCTION F_PINYIN(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS V_COMPARE VARCHAR2(100); ...