使用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才能看到该证书是已被信任,而且能够看到如下图的证书链关系:

5 后记

  默认的有效期是3个月的,例子中都没有设置有效期,所以签出来的证书都是3个月有效期的;如果需要签发比较长的有效期则在每一步产生密钥对和证书的操作都需要带上-validity指定有效期,特别注意签发的证书有效期不能超过CA证书的有效。下面举个例子,签发10年的CA证书,则命令如下:

#生成密钥对,指定有效期为3650,即10年
keytool -genkeypair -alias rootca -keyalg RSA -validity 3650

使用keytool工具产生带根CA和二级CA的用户证书相关推荐

  1. 证书及证书管理(keytool工具实例)

    一: 什么是证书?为什么要使用证书? 对数据进行签名(加密)是我们在网络中最常见的安全操作.签名有双重作用,作用一就是保证数据的完整性,证明数据并非伪造,而且在传输的过程中没有被篡改,作用二就是防止数 ...

  2. OpenSSL自建CA和签发二级CA及颁发SSL证书

    自己签发CA证书再签发服务器证书的场景非常简单.把根CA证书导入到浏览器后,就可以信任由这个根CA直接签发的服务器证书. 但是实际上网站使用的证书肯定都不是由根CA直接签发的,比如 像百度这种,网站使 ...

  3. Java安全架构____java的Keytool工具Oracle官方说明文档

    keytool -密钥和证书管理工具 管理密钥的密钥存储库(数据库),X.509证书链,受信任的证书. 剧情简介 keytool[commands ] keytool命令接口已经改变了在Java SE ...

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

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

  5. 【SSL】使用Keytool工具生成证书及签名完整步骤

    前言 jdk 1.8 OS:redhat 7.0 linux 命令的换行符为 \. window 命令的换行符为 ^.本文中的命令在 redhat 上进行的测试.如果使用windows时,将下面的命令 ...

  6. 【ssl认证、证书】java中的ssl语法API说明(SSLContext)、与keytool 工具的联系

    文章目录 1. 前言 java中的ssl语法与keytool 工具的联系 2. SSLContext的体系 2.1 KeyStore 2.1.1 通过证书库文件创建: 2.1.2 随机生成自签名证书库 ...

  7. 使用keytool工具常用证书转换

    使用keytool工具常用证书转换 p12 转 jks keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12 - ...

  8. java生成csr_使用Keytool工具生成CSR

    使用Keytool工具生成CSR 发布时间:2018-03-02 15:55:57 keytool是JDK中工具,对JDK版本要求不高,但基于现在JDK版本的安全性考虑,建议使用JDK8及以上版本 C ...

  9. keytool 工具介绍

    使用JDK自带的 keytool 工具: 简介 keytool 命令是一个密钥和证书管理的工具.它允许用户使用数字签名管理自己的公钥/私钥对和相关证书,用于自我身份验证(向其他用户和服务验证自己)或数 ...

最新文章

  1. [算法题] Add Two Numbers
  2. c:forEach varStatus=status中 varStatus的属性简介
  3. CloudFoundry Service 使用
  4. python:动态参数*args
  5. Python set集合 - Python零基础入门教程
  6. 蓝牙耳机按键事件linux,调用蓝牙耳机的按键,或者有线耳机的按键方法?
  7. 牛客 黑龙江大学程序设计竞赛重现 19-4-25 D
  8. Sql语句查询某列A相同值的另一列B最大值的数据
  9. c++大作业--学籍管理系统--
  10. 你专属的程序员春节“大礼包”
  11. vue3+ts封装echarts
  12. 水体浮游植物叶绿素a含量的测定
  13. 打印DPI如何与计算机DPI一致,ps打印尺寸怎么设置和实际纸张一致? -电脑资料
  14. 基于阶梯灰度图法的空间光调制器相位延迟测量
  15. Java 点击按钮下载Excel
  16. 联想拯救者Y7000P和Y9000P的区别
  17. 发布网站ASP.NET(ASPX)
  18. [sharepoint]文档库,文件夹授权
  19. 手机您的浏览器不允许第三方_手机壁纸:我的世界不允许你的消失,不管结局是否完美...
  20. python显示圆周率的值是多少_用python做一个有趣的实验,看你的生日是否出现在圆周率中...

热门文章

  1. 图形化开放式生信分析系统开发- 1基本需求分析及技术实现
  2. 数据数据泄露泄露_通过超参数调整进行数据泄漏
  3. DM8168 - BT656格式视频采集
  4. linux tty pty 的使用
  5. geoserver 官方文档翻译(其一)----- CQL and ECQL cql_filter例子
  6. T(n) = 25T(n/5)+n^2的时间复杂度(转)
  7. UVA11400:简单dp
  8. 使用cmd时cd命令失效
  9. Android监听是否点击了home键或者锁屏键
  10. 斐波纳契数列 1,1,2,3,5,8,13,21,34,55,89……这个数列则称为“斐波纳契数列”,其中每个数字都是“斐波纳契数”。