任何机构或者个人都可以申请数字证书,并使用数字证书对网络通信保驾护航。要获得数字证书,首先需要使用数字证书管理工具,如keytool、OpenSSL等,然后构建CSR(Certificate Siging Request,数字证书签发申请),提交给数字证书认证机构进行签名,最终形成数字证书。

Keytool 是一个Java 数据证书的管理工具 ,Keytool 将密钥(key)和证书(certificates)存在一个称为keystore的文件中。

在keystore里,包含两种数据:

(1)密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密) 
(2)可信任的证书实体(trusted certificate entries)——只包含公钥

JDK中Keytool常见的命令:

-genkey      在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书(在没有指定生成位置的情况下,keystore会存在用户系统默认目录)
-alias       产生别名,每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写
-keystore    指定密钥库的名称(产生的各类信息将不在.keystore文件中)
-keyalg      指定密钥的算法 (如 RSA  DSA(如果不指定默认采用DSA))
-validity    指定创建的证书有效期多少天
-keysize     指定密钥长度
-storepass   指定密钥库的密码(获取keystore信息所需的密码)
-keypass     指定别名条目的密码(私钥的密码)
-dname       指定证书拥有者信息
-list        显示密钥库中的证书信息
-v           显示密钥库中的证书详细信息
-export      将别名指定的证书导出到文件
-file        参数指定导出到文件的文件名
-delete      删除密钥库中某条目
-printcert   查看导出的证书信息
-keypasswd   修改密钥库中指定条目口令
-import      将已签名数字证书导入密钥库 

在JDK 1.4以后的版本中都包含了这一工具,它的位置为%JAVA_HOME%\bin\keytool.exe,如下图:

(1)构建自签名证书

在构建CSR之前,需要先在秘钥库中生成本地数字证书。生成本地数字证书需要提供用户的身份、加密算法、有效期等一些数字证书的基本信息。

keytool -genkeypair -keyalg RSA -keysize 1024 -sigalg MD5withRSA -va
lidity 365 -alias bo -keystore bo.keystore

(2)证书导出

执行完上述命令之后,我们已经在本地生成了一个数字证书,虽然没有经过证书认证机构进行认证,但是并不影响我们使用,我们可以使用相应的命令导出。

C:\Users\bo>keytool -exportcert -alias bo -file bo.cer -keystore bo.keystore -rfc

(3)导出CSR

如果想得到证书认证机构的认证,需要导出数字证书并签发申请(CSR),经过认证机构认证并签发后,再将认证后的证书导入到本地秘钥库和信任库。

keytool -certreq -alias bo -keystore bo.keystore -file bo.csr -v

导出CSR后,便可以到VerSign、GeoTrust等权威证书认证机构进行证书认证,但是通过这些认证机构认证的证书往往价格不菲。可以通过一些证书认证机构申请免费的证书,如Cacert。

(4)导入证书

获得证书认证机构颁发的数字证书后,需要将其导入信任库。

keytool -importcert -trustcacerts -alias bo -file bo.cer -keystore bo.keystore

(5)查看keystore中证书

通过上面一系列操作导入证书后,便可以通过相关命令,列出keystore中的证书。

keytool -list -alias bo -keystore bo.keystore

keytool没办法签发其它证书,只能只签名生成证书。因此用户如果需要签发证书,需要使用OpenSSL等来进行证书的签发和证书链的管理。

参考:

https://blog.csdn.net/yinhuaiya/article/details/81774314

https://www.cnblogs.com/xdp-gacl/p/3750965.html

java中Keytool生成证书相关推荐

  1. keytool生成证书_创建自签名ssl证书,Java生产jks证书

    一.创建自签名ssl证书 下载openssl软件: https://pan.baidu.com/s/1Zy4W7pqSO8caoR_R5pF3DQ  #提取码:bjd4 设置环境变量 进入openss ...

  2. Tomcat服务器配置https双向认证,使用JDK的keytool生成证书(适用于web、安卓、IOS)

    Tomcat服务器配置https双向认证,使用JDK的keytool生成证书(适用于web.安卓.IOS) 一.原理 1.HTTP:平时浏览网页时候使用的一种协议.HTTP协议传输的数据都是未加密的( ...

  3. 使用keytool生成证书和秘钥

    使用keytool生成证书和秘钥 Java中的 keytool.exe(位于  JDK\Bin 目录下)可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中,证书库中的 ...

  4. openssl生成证书linux,linux中openssl生成证书和自签证书linux操作系统 -电脑资料

    下面来给大家介绍关于linux中openssl生成证书和自签证书的例子,整个过程都讲述的非常详细有兴趣的朋友可进入参考, 1.首先要生成服务器端的私钥(key文件):代码如下复制代码 openssl ...

  5. java中如何生成随机数?

    java中如何生成随机数? package com.test.util; import java.text.SimpleDateFormat; import java.util.Date; impor ...

  6. java中如何生成可执行的jar文件

    java中如何生成可执行的jar文件最简单的方法就是:jar -cfe Card.jar CardLayoutDemo CardLayoutDemo$1.class CardLayoutDemo$my ...

  7. Tomcat服务器配置https认证(使用keytool生成证书)

    Tomcat服务器配置https认证(使用keytool生成证书) 一.证书生成 1 .生成服务器证书 (1)打开打开命令控制台,进入jdk的bin目录 (2)keytool为Tomcat生成证书(& ...

  8. java keytool生成证书_使用JDK自带的工具keytool生成证书

    1.以管理员身份,打开CMD命令窗口,输入如下命令,生成证书: Microsoft Windows [版本 10.0.17134.523] (c) 2018 Microsoft Corporation ...

  9. java中RSA数字证书生成,jks文件生成以及读取。

    一.Java代码生成cer证书文件: public class GetCertFile { //证书颁发者     static String CertificateIssuer = "C= ...

最新文章

  1. 《iOS取证实战:调查、分析与移动安全》一2.4 安全
  2. Java并发之公平锁
  3. java------线程同步方法
  4. Cracking Wifi Wpa-Wpa2 in 5 second——Dumpper V.80.8 +JumpStart+WinPcap
  5. User Mode Driver Management介绍(一)
  6. c# winform中窗体切换后释放及防止重复生成
  7. 在Angular 8中使用自定义MultiSelect下拉菜单创建动态行
  8. 寻找某个数c语言,C++_C语言实现两个递减数列中寻找某一个数,本文实例讲述了C语言实现两个 - phpStudy...
  9. chrome下方的copeascURL(cmd) 复制的内容,在windows的cmd中不可用的原因
  10. python爬虫实例100例-python 爬虫实例
  11. 如何将XML转换为HL7
  12. 拆字在线版-扌斥字在纟戋片反【转】------字库增强版
  13. jzoj 5850.【NOIP提高组模拟2018.8.25】e 可持久化线段树+lca
  14. 计算机专业毕业设计选题推荐(建议收藏)
  15. 显卡、显卡驱动、Nvcc、Cuda Driver、CudaToolkit 、Cudnn到底是什么?
  16. 微信小程序入门教程之四:API 使用
  17. android extra_shortcut_icon,Android Shortcut操作(一)
  18. 2.3 Bean装配
  19. jmeter非GUI模式如何压测并生成测试报告
  20. 用C#输出99乘法表

热门文章

  1. 华为云设计语言_多云架构落地设计和实施方案【华为云分享】
  2. Error querying database. Cause: java.sql.SQLException:
  3. 网络爬虫的原理和案例
  4. 【C++】侯捷C++面向对象高级编程(上)
  5. GPG error: NVIDIA NO_PUBKEY A4B469963BF863CC
  6. 计算机网络关键知识点记录
  7. canvas手绘正五边形
  8. sudo: unable to resolove host iZ2ze7gg2o6tplktzc1le0Z问题的解决方法
  9. windows10远程桌面连接
  10. Morse Code-神奇而朴实的摩斯电码