利用JDK自带工具keyTool生成安全证书

时间:2023-03-09 05:40:43
利用JDK自带工具keyTool生成安全证书

前言:说一下最近做的工作,主要利用iText给网页中生成好的html报表转化为pdf格式的文件,并且在其中加入水印,数字签名等等,这部分主要介绍安全证书的目的就是为了做数字签名部分用的。

下面利用jdk中自带的keytool生成安全证书:

1:生成服务器证书

打开CMD命令行工具,cd jdk的bin目录下,如下图所示:

利用JDK自带工具keyTool生成安全证书

利用keytool生成安全证书:官网api

下面说一下简单的参数

keytool
-genkey   (在用户主目录中创建一个默认文件”.keystore”,还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书)
-alias tomcat(别名)
-keypass 123456(别名密码)
-keyalg RSA(算法)
-keysize 1024(密钥长度)
-validity 365(有效期,天单位)
-keystore d:/temp/keys/tomcat.keystore(指定生成证书的位置和证书名称) //注意d:/temp/keys/文件夹必须提前建立好
-storepass 123456(文件存储的密码,也就是获取keystore信息所需的密码)

结合起来:

keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore d:/temp/keys/tomcat.keystore -storepass 123456

回车之后会让你填写如下图信息:

利用JDK自带工具keyTool生成安全证书

如上图我不小心将路径写错了,则会出现找不着对应文件的错误。当我修改过来在继续执行,则会发现建立完成。

利用JDK自带工具keyTool生成安全证书

2 生成客户端证书

客户端是为了证书的相互验证,为了能将证书顺利导入至IE和Firefox,证书格式应该是PKCS12,当然,默认情况下证书有多种格式可以选择。

因此,使用如下命令生成:

keytool
-genkey
-alias client                   (别名)
-keypass 123456                 (密码)
-keyalg RSA                    (算法)
-storetype PKCS12                (存储方式)
-keypass 123456                 (key密码)
-storepass 123456               (store密码)
-keystore D:、temp/keys/client.p12    (客户端验证证书存储路径)

整合起来:

keytool -genkey -alias client -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -storetype PKCS12 -keystore D:/temp/keys/client1.p12 -storepass 123456

利用JDK自带工具keyTool生成安全证书

填完信息之后,没有任何提示表示成功

利用JDK自带工具keyTool生成安全证书

3 让服务器端信任客户端证书

1、由于不能直接将PKCS12格式的证书库导入,必须先把客户端证书导出为一个单独的CER文件,使用如下命令:

keytool -export -alias client -keystore D:/temp/keys/client.p12 -storetype PKCS12 -keypass 123456 -file D:/temp/keys/client.cer

注意:

利用JDK自带工具keyTool生成安全证书

同时在对应的文件夹下面生成了验证文件:client1.cer

利用JDK自带工具keyTool生成安全证书

2、将该文件导入到服务器的证书库,添加为一个信任证书:

keytool -import -v -file D:/temp/keys/client1.cer -keystore D:/temp/keys/tomcat.keystore -storepass 123456

利用JDK自带工具keyTool生成安全证书

完成之后通过list命令查看服务器的证书库,可以看到两个证书,一个是服务器证书,一个是受信任的客户端证书:

keytool -list -v -keystore D:/temp/keys/tomcat.keystore

4 让客户端信任服务器证书

1、由于是双向SSL认证,客户端也要验证服务器证书,因此,必须把服务器证书添加到浏览器的“受信任的根证书颁发机构”。由于不能直接将keystore格式的证书库导入,必须先把服务器证书导出为一个单独的CER文件,使用如下命令:

keytool -keystore D:/temp/keys/tomcat.keystore -export -alias tomcat6 -file D:/temp/keys/server.cer

利用JDK自带工具keyTool生成安全证书

对应的目录下面生成信任文件

利用JDK自带工具keyTool生成安全证书

2、双击server.cer文件,按照提示安装证书,将证书填入到“受信任的根证书颁发机构”。填入方法:

打开浏览器   - 工具  -  internet选项-内容- 证书-把中级证书颁发机构里的www.localhost.com(该名称即时你前面生成证书时填写的名字与姓氏)证书导出来-再把导出来的证书导入  受信任的根颁发机构  就OK了。