zl程序教程

您现在的位置是:首页 >  后端

当前栏目

jdk中密钥和证书管理工具keytool常用命令详解

JDK管理工具 详解 常用命令 证书 密钥 keytool
2023-06-13 09:15:16 时间

-genkey     在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书
-alias      产生别名
-keystore   指定密钥库的名称(产生的各类信息将不在.keystore文件中
-keyalg     指定密钥的算法   
-validity   指定创建的证书有效期多少天
-keysize    指定密钥长度
-storepass  指定密钥库的密码
-keypass    指定别名条目的密码
-dname      指定证书拥有者信息例如: "CN=sagely,OU=atr,O=szu,L=sz,ST=gd,C=cn"
-list       显示密钥库中的证书信息     keytool-list-v-keystoresage-storepass....
-v          显示密钥库中的证书详细信息
-export     将别名指定的证书导出到文件 keytool-export-aliascaroot-filecaroot.crt
-file       参数指定导出到文件的文件名
-delete     删除密钥库中某条目         keytool-delete-aliassage-keystoresage
-keypasswd  修改密钥库中指定条目口令   keytool-keypasswd-aliassage-keypass....-new....-storepass...-keystoresage
-import     将已签名数字证书导入密钥库 keytool-import-aliassage-keystoresagely-filesagely.crt
            导入已签名数字证书用keytool-list-v以后可以明显发现多了认证链长度,并且把整个CA链全部打印出来。

keytoolJAVA是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。通过keytool?help查看其用法,详细信息可以参考http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html

创建证书Java中的keytool.exe(位于JDK/Bin目录下)可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息。证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥。
每一个证书库是一个文件组成,它有访问密码,在首次创建时,它会自动生成证书库,并要求指定访问证书库的密码。
在创建证书的的时候,需要填写证书的一些信息和证书对应的私钥密码。这些信息包括CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx,它们的意思是:
?CN(CommonName-名字与姓氏):其实这个“名字与姓氏”应该是域名,比如说localhost或是blog.devep.net之类的。输成了姓名,和真正运行的时候域名不符,会出问题。浏览器访问时,弹出一个对话框,提示“安全证书上的名称无效,或者与站点名称不匹配”,用户选择继续还是可以浏览网页。但是用httpclient写程序访问的时候,会抛出类似于“javax.servlet.ServletException:HTTPShostnamewrong:shouldbe”的异常。
?OU(OrganizationUnit-组织单位名称)
?O(Organization-组织名称)
?L(Locality-城市或区域名称)
?ST(State-州或省份名称)
?C(Country-国家名称)
可以采用交互式让工具提示输入以上信息,也可以采用参数,如:-dname“CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx”来自动创建。

创建一个证书
指定证书库为D:/keystore/test,创建别名为Tomcat的一条证书,它指定用RSA算法生成,且指定密钥长度为1024,证书有效期为1年:
keytool-genkey-aliasTomcat-keyalgRSA-keysize1024-keystoreC:/keystore/test-validity365
显示证书库中的证书使用如下命令:keytool-list-keystoreC:/keystore/test将显示C:/keystore/test证书库的的所有证书列表

导出到证书文件
使用命令:keytool-export-aliasTomcat-fileC:/keystore/TC.cer-keystoreC:/keystore/test将把证书库C:/keystore/test中的别名为Tomcat的证书导出到TC.cer证书文件中,它包含证书主体的信息及证书的公钥,不包括私钥,可以公开。
导出的证书文件是以二进制编码文件,无法用文本编辑器正确显示,可以加上-rfc参数以一种可打印的编者编码输出。如:
keytool-export-aliasTomcat-fileC:/keystore/TC.cer-keystoreC:/keystore/test?rfc

查看证书的信息
通过命令:keytool-printcert-fileD:/keystore/TC.cer可以查看证书文件的信息。也可以在Windows资源管理器中双击产生的证书文件直接查看。

删除密钥库中的条目
keytool-delete-aliasTomcat-keystoreC:/keystore/test
这条命令将C:/keystore/test库中的Tomcat这一条证书删除了。

修改证书条目口令
keytool-keypasswd-aliasTomcat-keystoreC:/keystore/test,可以以交互的方式修改C:/keystore/test证书库中的条目为Tomcat的证书。
Keytool-keypasswd-aliasTomcat-keypassoldpasswd-newnewpasswd-storepassstorepasswd-keystoreC:/keystore/test这一行命令以非交互式的方式修改库中别名为Tomcat的证书的密码为新密码newpasswd,行中的oldpasswd是指该条证书的原密码,storepasswd是指证书库的密码。