使用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的用户证书的更多相关文章

  1. ssl证书与java keytool工具

    ssl协议 SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安 ...

  2. Java Security:keytool工具使用说明

    Keytool用法说明 Keytool是一个key与cert的管理工具.使用keytool可以管理public key.private key,以及与key之相关的certificate. 1.com ...

  3. tomcat配置https–采用JDK自带的keytool工具生成证书

    转自:http://blog.csdn.net/huangxinyu_it/article/details/41693633 有关http与https的区别请看<浅谈http与https的区别( ...

  4. 使用JDK自带的keytool工具生成证书

    一.keytool 简介 keytool 是java用于管理密钥和证书的工具,它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及 ...

  5. 使用CloudFlare 的 PKI 工具集 cfssl 来生成 Certificate Authority (CA) 证书和秘钥文件

    要安装kubernetes最新版集群,https://github.com/opsnull/follow-me-install-kubernetes-cluster 这个文档必须要研习一下了. 以下实 ...

  6. 利用keytool工具生成数字证书

    一.制作数字证书  因测试微信小程序, 腾讯要求使用 https协议,所以需要使用证书.使用jdk工具制作数字证书流程如下: 1.查看JDK是否安装,使用命令java -version 2.切换目录至 ...

  7. 使用 OpenSSL 创建私有 CA:3 用户证书

    OpenSSL 创建私有 CA 三部曲:使用 OpenSSL 创建私有 CA:1 根证书使用 OpenSSL 创建私有 CA:2 中间证书使用 OpenSSL 创建私有 CA:3 用户证书 在前文&l ...

  8. ca证书校验用户证书

    openssl verify -CAfile ca.cer server.crt 现在很多网站和服务都使用了HTTPS进行链路加密.防止信息在传输中间节点被窃听和篡改.HTTPS的启用都需要一个CA证 ...

  9. 搭建自己的CA服务 - OpenSSL CA 实战

    当前网络安全事故不断,如何提升系统安全性是一个系统上线之前必须考虑的重点DFx特性之一.在提升系统安全性的方法中, 给每个端口(通道)加上SSL协议是最通用和有效的一种. 使用SSL就必须要有证书,在 ...

随机推荐

  1. 数学归纳法·Fibonacci数列

    数学归纳法 我们先来看一个例子: 我们让多诺米骨牌倒下的充要条件是: 第一块骨牌倒下: 假设当当前块骨牌倒下时,则他的后面一块也会倒下. 我们把这个例子给抽象出来就可以得到数学归纳法的证明过程: [第 ...

  2. 在thinkphp5.0中调用ajax时, 返回的JSON 格式数据在html前台不能用时

    在thinkphp5.0中调用ajax时,如果控制器返回的数据为json格式,视图层接收到返回值即为json格式的数据,此时应该把 JSON 文本转换为 JavaScript 对象,方便调用.具体代码 ...

  3. Codeforces Round #535 (Div. 3) E2. Array and Segments (Hard version) 【区间更新 线段树】

    传送门:http://codeforces.com/contest/1108/problem/E2 E2. Array and Segments (Hard version) time limit p ...

  4. docker-2-安装

    安装之前确定Centos的相关问题: CentOS Docker 安装 Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更高的版 ...

  5. CUDA 深入浅出谈[转]

    CUDA 深入浅出谈           “CUDA 是 NVIDIA 的 GPGPU 模型,它使用 C 语言为基础,可以直接以大多数人熟悉的 C 语言,写出在显示芯片上执行的程序,而不需要去学习特定 ...

  6. 移动端meta标签的设置

    var phoneWidth = parseInt(window.screen.width); var phoneScale = phoneWidth / 640; var ua = navigato ...

  7. Segmentation fault(Core Dump)

    Segmentation fault 这个提示还是比较常见的,这个提示就是段错误,这是翻译还是十分恰当的. Core Dump 有的时候给我们呈现的翻译很有趣是”吐核“,但是实际上比较贴切的翻译是核心 ...

  8. var let const的一些区别

    var let const 都是来定义变量的. var let 作用域有些区别. const 类似于java中的常量的概念.即:只能给一个变量赋值一次,即指定一个引用. 举例来说: function ...

  9. AML与PIO整合问题

    要想把PIO引擎封装成AML组件,面临如下问题(逐渐补充): 1)版本不兼容 内容项 AML PIO 选型 兼容? JDK 1.7 1.8 1.8 是 SPARK 1.6.1 2.1.1     HA ...

  10. 慎使用sql的enum字段类型

    在sql的优化中,会有同学提到一点:使用enum字段类型,代替其他tinyint等类型.以前这也是不少人喜欢优化的,但是现在细想,是非常不合理的. 优点: 1.可以设置区间范围,比如设置性别:1男2女 ...