数字证书管理工具openssl和keytool的区别

1.  用SSL进行双向身份验证意思就是在客户机连接服务器时,链接双方都要对彼此的数字证书进行验证,保证这是经过授权的才能够连接(我们链接一般的SSL时采用的是单向验证,客户机只验证服务器的证书,服务器不验证客户机的证书。而连接网上银行时使用的U盾就是用来存储进行双向验证所需要的客户端证书的)。
  JDK里面内置了一个数字证书生产工具keytool。但是这个工具只能生成自签名的数字证书。所谓自签名就是指证书只能保证自己是完整的,没有经过非法修改的。但是无法保证这个证书是属于谁的(一句话:keytool没办法签发证书,而openssl能够进行签发和证书链的管理)。其实用这种自签名的证书也是可以进行双向验证的(用keytool生成的自签名证书进行双向验证请看这里:http://www.blogjava.net/stone2083/archive/2007/12/20/169015.html),但是这种验证有一个缺点:对于每一个要链接的服务器,都要保存一个证书的验证副本。而且一旦服务器更换证书,所有客户端就需要重新部署这些副本。对于比较大型的应用来说,这一点是不可接受的。所以就需要证书链进行双向认证。证书链是指对证书的签名又一个预先部署的,众所周知的签名方签名完成,这样每次需要验证证书时只要用这个公用的签名方的公钥进行验证就可以了。比如我们使用的浏览器就保存了几个常用的CA_ROOT。每次连接到网站时只要这个网站的证书是经过这些CA_ROOT签名过的。就可以通过验证了。
  但是这些共用的CA_ROOT的服务不是免费的。而且价格不菲。所以我们有必要自己生成一个CA_ROOT的密钥对,然后部署应用时,只要把这个CA_ROOT的私钥部署在所有节点就可以完成验证了。要进行CA_ROOT的生成,需要OpenSSL(http://www.openssl.org/)。你也可以在http://www.slproweb.com/products/Win32OpenSSL.html找到Windows下的版本
安装好OpenSSL以后就可以生成证书链了

2.使用openssl生成根证书,服务端证书,客户端证书的方法:https://blog.youkuaiyun.com/u012333307/article/details/21597101

服务端、客户端经过认证的证书还要分别加入到彼此的信任库:

 

 

目的:实现web项目的ssl双向认证客户端证书代码生成。

使用openssl生成ca证书和服务端证书,当然也可以通过代码实现

1)创建CA私钥,创建目录ca

openssl genrsa -out ca/ca-key.pem 1024

2)创建证书请求

openssl req -new -out ca/ca-req.csr -keyca/ca-key.pem -config openssl.cnf 

在YOUR name 处一定要填写项目布置服务器所属域名或ip地址。

3)自签署证书

openssl x509 -req -in ca/ca-req.csr -outca/ca-cert.pem -signkey ca/ca-key.pem -days 3650

4)导出ca证书

openssl pkcs12 -export -clcerts -inca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca.p12

只导出 ca证书,不导出ca的秘钥

openssl pkcs12 -export -nokeys -cacerts -inca/ca-cert.pem -inkey ca/ca-key.pem -

out ca/ca1.p12

注册服务端证书

1)创建服务端密钥库,别名为server,validity有效期为365天,密钥算法为RSA, storepass密钥库密码,keypass别名条码密码。

keytool -genkey -alias server -validity 3650-keyalg RSA -keysize 1024 -keypass 123456 -storepass 123456 -keystoreserver/server.jks 

在名字和姓氏处填写项目布置服务器所属域名或ip地址。

2)生成服务端证书

keytool -certreq -alias server -sigalgMD5withRSA -file server/server.csr -keypass 123456 -keystore server/server.jks-storepass 123456

3)使用CA的密钥生成服务端密钥,使用CA签证

openssl x509 -req -in server/server.csr-out server/server.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -days 3650-set_serial 1

4)使密钥库信任证书

keytool -import -v -trustcacerts -keypass123456 -storepass 123456 -alias root -file ca/ca-cert.pem -keystoreserver/server.jks

5)将证书回复安装在密钥库中

keytool -import -v -trustcacerts -storepass123456 -alias server -file server/server.pem -keystore server/server.jks

6)生成服务端servertrust.jks信任库

keytool -import -alias server-ca-trustcacerts -file ca/ca-cert.pem -keystore server/servertrust.jks

注册客户端证书

1)创建客户端密钥,指定用户名,下列命令中的user将替换为颁发证书的用户名

openssl genrsa -out client/user-key.pem1024

2)

openssl req -new -out client/user-req.csr-key client/user-key.pem

3)生成对应用户名的客户端证书,并使用CA签证

openssl x509 -req -in client/user-req.csr-out client/user-cert.pem -signkey client/user-key.pem -CA ca/ca-cert.pem-CAkey ca/ca-key.pem -CAcreateserial -days 3650

4)将签证之后的证书文件user-cert.pem导出为p12格式文件(p12格式可以被浏览器识别并安装到证书库中)

openssl pkcs12 -export -clcerts -inclient/user-cert.pem -inkey client/user-key.pem -out client/user.p12 

5)将签证之后的证书文件user-cert.pem导入至信任秘钥库中(这里由于没有去ca认证中心购买个人证书,所以只有导入信任库才可进行双向ssl交互

keytool -import -alias user -trustcacerts-file client/user-cert.pem -keystore server/servertrust.jks

6)

keytool -list -v -alias user -keystoreserver/servertrust.jks -storepass 123456

3.配置web容器(tomcat或weblogic)tomcat conf 文件夹下的server.xml

 

 

关于X.509不同的数字证书所包含的内容信息和格式可能不尽相同,因此,需要一种格式标准来规范数字证书的存储和校验,大多数数字证书都以一种标准的格式(即X.509)来存储他们的信息,X.509

提供了一种标准的方式,将证书信息规范地存储到一系列可解析的字段中,X.509 V3 是X.509标准中目前使用最为广泛的版本

 

转载于:https://www.cnblogs.com/zhangshitong/p/9015482.html

数字证书管理工具V2.0-使用java图形化编写,安装版直接安装使用(由于上传大小的限制,本版本为不带jre版,使用前请确保环境中已经安装过jdk) 数字证书管理工具V2.0: 包括三个视图,分别是:密钥库列表、证书库列表、证书管理维护界面;其中密钥库列表用于显示默认密钥库中的所有条目;证书库列表用于显示默认证书库中的所有数字证书;证书管理维护界面分为左右两部分,左半部分可以显示条目或者数字证书的详细信息,右半部分可以用于新建条目或者数字证书。另外,还可以对外部密钥库或者证书进行操作(V2.0新增功能)。 以下是三个视图的具体功能: =================================== 密钥库列表视图功能 1.双击条目可以在证书管理维护界面左半部分显示此条目的具体信息; 2.右击条目出现上下文操作菜单; 3.刷新条目; 4.清除屏幕; 5.查看证书; 6.签发证书; 7.修改口令; 8.生成证书; 9.导出证书; 10.删除条目; 11.导出对应密钥库; 12.导出p12个人证书; =================================== 证书库列表视图功能 1.双击证书可以在证书管理维护界面左半部分显示此证书的具体信息; 2.右击证书出现上下文操作菜单; 3.刷新证书; 4.清除屏幕; 5.查看证书; 6.公钥验证; 7.导入证书; 8.导出证书; 9.删除证书; =================================== 证书管理维护界面视图功能 1.数字证书显示界面:显示数字证书的详细信息,包括:证书信息、颁发给、颁发者、有效期、版本号、序列号、签名算法、有效期起始日期、有效期终止日期、主题、公钥、签名; 2.数字证书管理界面:新建条目或者数字证书,可输入条目或者数字证书具体的信息,包括CN(名字与姓氏)、OU(组织单位名称)、O(组织名称)、L(城市名称)、ST(省份名称)、C(国家代码)、Alia(别名)、KeyAlg(加密算法)、Validity(有效期)、生成类型; =================================== 对外部密钥库或者证书进行的操作有: 1.打开外部数字证书,查看证书详情; 2.查看外部密钥库中的所有条目,可以对其中的条目进行查看信息、生成证书、导出证书、修改口令、删除条目等操作; 3.将已签名的数字证书导入到密钥库中 ============================================================================ ==================================================================================================================================================================================================================================== 数字证书管理工具V1.0,广西大学计算机与电子信息学院 数字证书管理工具V1.0: 包括三个视图,分别是:密钥库列表、证书库列表、证书管理维护界面;其中密钥库列表用于显示默认密钥库中的所有条目;证书库列表用于显示默认证书库中的所有数字证书;证书管理维护界面分为左右两部分,左半部分可以显示条目或者数字证书的详细信息,右半部分可以用于新建条目或者数字证书。 以下是三个视图的具体功能: =================================== 密钥库列表视图功能 1.双击条目可以在证书管理维护界面左半部分显示此条目的具体信息; 2.右击条目出现上下文操作菜单; 3.刷新条目; 4.清除屏幕; 5.查看证书; 6.签发证书; 7.修改口令; 8.生成证书; 9.导出证书; 10.删除条目; =================================== 证书库列表视图功能 1.双击证书可以在证书管理维护界面左半部分显示此证书的具体信息; 2.右击证书出现上下文操作菜单; 3.刷新证书; 4.清除屏幕; 5.查看证书; 6.公钥验证; 7.导入证书; 8.导出证书; 9.删除证书; =================================== 证书管理维护界面视图功能 1.数字证书显示界面:显示数字证书的详细信息,包括:证书信息、颁发给、颁发者、有效期、版本号、序列号、签名算法、有效期起始日期、有效期终止日期、主题、公钥、签名; 2.数字证书管理界面:新建条目或者数字证书,可输入条目或者数字证书具体的信息,包括CN(名字与姓氏)、OU(组织单位名称)、O(组织名称)、L(城市名称)、ST(省份名称)、C(国家代码)、Alia(别名)、KeyAlg(加密算法)、Validity(有效期)、生成类型; (由于上传大小的限制,本版本为不带jre版,使用前请确保环境中已经安装过jdk)
数字证书管理工具V1.0-使用java图形化编写,安装版直接安装使用(由于上传大小的限制,本版本为不带jre版,使用前请确保环境中已经安装过jdk) 数字证书管理工具V1.0: 包括三个视图,分别是:密钥库列表、证书库列表、证书管理维护界面;其中密钥库列表用于显示默认密钥库中的所有条目;证书库列表用于显示默认证书库中的所有数字证书;证书管理维护界面分为左右两部分,左半部分可以显示条目或者数字证书的详细信息,右半部分可以用于新建条目或者数字证书。 以下是三个视图的具体功能: =================================== 密钥库列表视图功能 1.双击条目可以在证书管理维护界面左半部分显示此条目的具体信息; 2.右击条目出现上下文操作菜单; 3.刷新条目; 4.清除屏幕; 5.查看证书; 6.签发证书; 7.修改口令; 8.生成证书; 9.导出证书; 10.删除条目; =================================== 证书库列表视图功能 1.双击证书可以在证书管理维护界面左半部分显示此证书的具体信息; 2.右击证书出现上下文操作菜单; 3.刷新证书; 4.清除屏幕; 5.查看证书; 6.公钥验证; 7.导入证书; 8.导出证书; 9.删除证书; =================================== 证书管理维护界面视图功能 1.数字证书显示界面:显示数字证书的详细信息,包括:证书信息、颁发给、颁发者、有效期、版本号、序列号、签名算法、有效期起始日期、有效期终止日期、主题、公钥、签名; 2.数字证书管理界面:新建条目或者数字证书,可输入条目或者数字证书具体的信息,包括CN(名字与姓氏)、OU(组织单位名称)、O(组织名称)、L(城市名称)、ST(省份名称)、C(国家代码)、Alia(别名)、KeyAlg(加密算法)、Validity(有效期)、生成类型; (由于上传大小的限制,本版本为不带jre版,使用前请确保环境中已经安装过jdk)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值