keytool命令总结

来源:互联网 发布:死飞淘宝店 编辑:程序博客网 时间:2024/05/28 17:05

一、创建数字证书

交互模式

使用默认的密钥库.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算法时,密钥长度必须在5121024之间,并且是64的整数倍。

-keystore参数可以指定密钥库的名称。密钥库其实是存放密钥和证书的文件,密钥库对应的文件如果不存在自动创建。

-validity参数可以指定所创建的证书有效期是多少天。

非交互模式:

keytool -genkey -dname "CN=tmp, OU=NC, O=Shanghai University, L=ZB, ST=Shanghai, C=CN" -alias tmp -keyalg RSA -keystore 

二、数字证书的显示(从密钥库中)

默认密钥库全部证书信息

keytool -list -v(显示详细信息)

显示指定密钥库指定条目证书信息(包含了发照者(签发者)、序号、有效期、MD5SHA1认证指纹等额外信息)

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为新密码 )

证书生成应用实例:

执行命令前先保证文件夹存在。例如:在c盘建立keystore文件夹
第一步:为服务器生成证书 

确定域名:本机中域名解析修改文件是C:/WINDOWS/system32/drivers/etc/hosts
使用keytool 为 Tomcat 生成证书和密钥库,假定目标机器的域名是“ hepengfei ”, keystore 文件存放在“ C:keystoreserver ”,口令为“ 080302 ”,命令如下: 
keytool -genkey -v -keystore C:/keystore/server -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:/keystore/server -alias serverkey -file c:/keystore/server.cer -storepass 080302  

 

第二步:为客户端生成证书 

(注意:个人证书的生成和使用比较特别,是分开的。先生成p12文件,然后导出cer文件,再将cer文件导入默认类型的keystore(JKS)文件)
这一步是为浏览器生成证书,以便让服务器来验证它。为了能将证书顺利导入至IE 和 Firefox ,证书格式应该是 PKCS12 ,因此,使用如下命令生成: 
keytool -genkey -v -keystore C:/keystore/user.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:/keystore/user.p12 -storetype PKCS12 -storepass 080302 -rfc -file C:/keystore/user.cer   

 

接着,将C:user.cer导入到服务器的证书库,添加为一个信任证书: 

keytool -import -v -file C:/keystore/user.cer -keystore c:/keystore/servertrust -alias user -storepass 080302  

 

输入“是”确认完成。

通过list 命令查看: 
keytool -list -keystore c:/keystore/servertrust -storepass 080302   

 

也可以考虑将服务器证书和服务器信任证书放到一个密钥库中

注意点:

keytool -list -v -keystore user

使用的私钥库要privateKeyEntry

信任的库要trustedCertEntry

ConvertKeystoreType.java用于转换密钥库类型(PKCS12与JKS格式证书库转换工具)

 

生成证书请求:

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  

 

将已经签名的证书导入密钥库(覆盖原来的公钥)

先导入证书链中的相关信任证书,再导入已经签名的证书(别名与私钥证书别名保持一样)。 

原创粉丝点击