使用keytool工具产生带根CA和二级CA的用户证书
使用keytool工具产生带根CA和二级CA的用户证书
1 生成根CA
1.1 生成根CA证书
根CA实际是一张自签CA,自签CA的使用者和颁发者都是它自己。使用下面的命令生成根证书,如果没有指定keystore
则会使用默认在用户Home目录下的.keystore
秘钥库(如果没有则会创建),输入秘钥库的密码,填写根证书的信息,最后填写根证书秘钥对的密码。
keytool -genkeypair -alias rootca -keyalg RSA
如图是我填写的根证书信息,根CA的名字叫rootca
:
1.2 导出根CA证书
使用keytool
的导出功能,从秘钥库中导出根证书,输入秘钥库的密码,导出的证书文件为rootca.cer
命令如下:
keytool -exportcert -alias rootca -file rootca.cer
2 生成二级CA
2.1 生成二级CA证书
二级CA证书需要由根证书进行签发,首先需要使用keytool
生成二级CA的证书,但是此时的证书还是张自签证书,我们需要从中生成一个二级CA的证书请求(包含了公钥),然后通过将证书请求到rootca
签发我们的二级证书,然后我们在将rootca
签发的二级CA证书导入到导出证书请求的秘钥库中,完成二级CA的生成。下面是生成二级CA证书命令,此时是张自签证书:
keytool -genkeypair -alias subca -keyalg RSA
下面是二级CA证书的信息,名字叫subca
,如下图所示:
此时的证书颁发者和使用者都是自已,如下图所示:
2.2 从二级CA的秘钥对中生成证书请求
此时签的二级CA证书是一张自签证书,颁发者和使用者都是自身,我们需要从二级CA证书的keypair
中导出证书请求,下面是导出证书请求(带公钥)的命令,subca
是我们上面生成的二级CA的秘钥对名字,最终导出证书请求文件为subca.csr
:
keytool -certreq -alias subca -file subca.csr
2.3 使用证书请求从根CA中签发证书
通过keytool
工具的签发证书功能,使用rootca
对二级CA的证书请求(subca.csr)签发一张证书。命令如下,alias指定证书的颁发者,infile指定证书请求文件,outfile是签发证书的名字:
keytool -gencert -alias rootca -infile subca.csr -outfile subca.cer
可以看到该证书的颁发者已经是rootca
,rootca的主题是ChuanYeCA
了:
2.4 导入二级CA到秘钥库中
此时需要将根CA签发的二级CA导入会秘钥库中,秘钥库中的秘钥对对应的自签证书将会更新问根CA签发的证书,导入的命令如下,subca之前用来生成证书请求的秘钥对名字:
keytool -importcert -alias subca -file subca.cer
此时查看一下秘钥库中的subca的秘钥对的证书的颁发者是roota了:
]
3 使用二级证书签发用户证书
3.1 生成用户证书
签发用户证书的流程与产生二级CA的过程是一样的,下面我们进行产生用户shayne
的证书,将第2步中的所有rootca
该为二级CA的subca
,将subca
变为shayne
,先产生shayne
的自签证书,命令如下:
keytool -genkeypair -alias shayne -keyalg RSA
3.2 导出用户证书请求
导出的命令如下:
keytool -certreq -alias shayne -file shayne.csr
3.3 用二级CA签发用户证书
签发的命令如下:
keytool -gencert -alias subca -infile shayne.csr -outfile shayne.cer
3.4 导如用户证书到秘钥库中
导如证书到秘钥库的命令如下:
keytool -importcert -alias shayne -file shayne.cer
查看我们的秘钥库中的用户的证书信息如下图:
查看证书文件如下图:
4 查看用户证书链
需要先将根证书和二级CA证书安装到本地电脑的证书信任库中,双击shayne.cer才能看到该证书是已被信任,而且能够看到如下图的证书链关系:
使用keytool工具产生带根CA和二级CA的用户证书的更多相关文章
- ssl证书与java keytool工具
ssl协议 SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安 ...
- Java Security:keytool工具使用说明
Keytool用法说明 Keytool是一个key与cert的管理工具.使用keytool可以管理public key.private key,以及与key之相关的certificate. 1.com ...
- tomcat配置https–采用JDK自带的keytool工具生成证书
转自:http://blog.csdn.net/huangxinyu_it/article/details/41693633 有关http与https的区别请看<浅谈http与https的区别( ...
- 使用JDK自带的keytool工具生成证书
一.keytool 简介 keytool 是java用于管理密钥和证书的工具,它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及 ...
- 使用CloudFlare 的 PKI 工具集 cfssl 来生成 Certificate Authority (CA) 证书和秘钥文件
要安装kubernetes最新版集群,https://github.com/opsnull/follow-me-install-kubernetes-cluster 这个文档必须要研习一下了. 以下实 ...
- 利用keytool工具生成数字证书
一.制作数字证书 因测试微信小程序, 腾讯要求使用 https协议,所以需要使用证书.使用jdk工具制作数字证书流程如下: 1.查看JDK是否安装,使用命令java -version 2.切换目录至 ...
- 使用 OpenSSL 创建私有 CA:3 用户证书
OpenSSL 创建私有 CA 三部曲:使用 OpenSSL 创建私有 CA:1 根证书使用 OpenSSL 创建私有 CA:2 中间证书使用 OpenSSL 创建私有 CA:3 用户证书 在前文&l ...
- ca证书校验用户证书
openssl verify -CAfile ca.cer server.crt 现在很多网站和服务都使用了HTTPS进行链路加密.防止信息在传输中间节点被窃听和篡改.HTTPS的启用都需要一个CA证 ...
- 搭建自己的CA服务 - OpenSSL CA 实战
当前网络安全事故不断,如何提升系统安全性是一个系统上线之前必须考虑的重点DFx特性之一.在提升系统安全性的方法中, 给每个端口(通道)加上SSL协议是最通用和有效的一种. 使用SSL就必须要有证书,在 ...
随机推荐
- php 统计二维数组中某个相等值的总个数,并且组合成一个新的数组 转发
$ar = array( array( 'sv_id' => 1, 'mid' => 1, 'sv_question1' => 20 ), array( 'sv_id' =& ...
- HDU 6467 简单数学题 【递推公式 && O(1)优化乘法】(广东工业大学第十四届程序设计竞赛)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6467 简单数学题 Time Limit: 4000/2000 MS (Java/Others) M ...
- Linux学习总结(二) 网络配置-NAT方式静态IP配置篇
一:DHCP 服务验证 1: 之前我们在里面已经装好了centos,当时我们选择的组网方式为NAT方式,那么我们怎么样如何快速实现虚拟机系统访问外网呢?能不能直接上网呢,来我们试一下ping baid ...
- thinkphp 和 laravel使用sql语句操作db和源码浅析
thinkphp 和 laravel是phper开发中用的比较多的两个框架,无所谓好坏,看个人习惯及喜爱! 前言对于一个PHP应用,可能最多的就是操作数据,以致于初学者有时只把php当做数据库增删查改 ...
- 【题解】洛谷P1198 [JSOI2008] 最大数(线段树)
洛谷P1198:https://www.luogu.org/problemnew/show/P1198 思路 一道水水的线段树 20分钟A掉 这道题只涉及到单点修改和区间查询 所以这道题甚至不用Laz ...
- 对于dequeueReusableCellWithIdentifier:的理解
Table Data Source Methods中的一个必要实现的方法tableView: cellForRowAtIndexPath: 中经常会包含一段代码: static NSString ...
- css清除间隙
.clear{clear:both;height:0;width:0;line-height:0;overflow:hidden;}
- 【oracle笔记1】基础知识大集锦:增删改,数据类型,用户操作,持续更新中···
什么是数据库?数据库就是用来存储和管理数据的仓库.首先我来简单介绍一下各数据库的背景,常见的数据库如下,oracle:甲骨文公司(市场占用率最高),oracle也是一个公司名,翻译过来就是甲骨文的意思 ...
- 最新SQL手工注入语句&SQL注入大全
看看下面的1.判断是否有注入;and 1=1;and 1=2 2.初步判断是否是mssql;and user>0 3.判断数据库系统;and (select count(*) from syso ...
- LeetCode 中级 - 组合总和II(105)
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只能使用一次. ...