使用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就必须要有证书,在 ...
随机推荐
- BZOJ2346:[Baltic 2011]Lamp(最短路)
Description 2255是一个傻X,他连自己家灯不亮了都不知道. 某天TZ大神路过他家,发现了这一情况, 于是TZ开始行侠仗义了. TZ发现是电路板的问题, 他打开了电路板,发现线路根本没有连 ...
- AtCoder Grand Contest
一句话题解 QwQ主要是因为这篇文章写的有点长……有时候要找某一个题可能不是很好找,所以写了这个东西. 具体的题意.题解和代码可以再往下翻._(:з」∠)_ AGC 001 C:枚举中点/中边. D: ...
- empty() isset() isnull() 比较
有关 PHP 的 empty(),isset() 还有 is_null() 这三个函数的用法讨论得已经很多了,而且很多资料也未必能说得很清楚.这里再重复一次,但不是从概念去说,直接用程序例子来说话,应 ...
- 关于mysql 出现 1264 Out of range value for column 错误的解决办法
今天给客服恢复mysql数据的时候.本来测试好的数据.但是到了客户那里却死活不干活了.老报错! INSERT INTO ka_tan4 set num='716641385999', username ...
- HDU 2588 GCD 【Euler + 暴力技巧】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=2588 GCD Time Limit: 2000/1000 MS (Java/Others) Mem ...
- C++自定义函数
函数可以看成是用户为了解决某特定问题而定义的操作.除了在C++语法里自带的函数,有时候我们需要处理某个问题.但C++里并没有这个函数,这时我们就可以自己来定义一个函数实现需要的功能. 比如我们定义个求 ...
- 图片背景2X && 3X
图片背景2X && 3X @media (-webkit-min-device-pixel-ratio: 3),(min-device-pixel-ratio: 3){ .share_ ...
- localStorage和cookie操作
localStorage和cookie操作代码: cookie: { isSupportCookie: function() { return navigator.cookieEnabled; }, ...
- 如果js设置移动端有两种方式 大家可以参考
//使用em单位 var scaleObj = { documentEle : document.documentElement, deviceWidth : document.documentEle ...
- 大数据框架-Mapreduce过程
1.Shuffle [从mapTask到reduceTask: Mapper -> Partitioner ->Combiner -> Sort ->Reducer] mapp ...