百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

程序员必备工具 Java证书工具Keytool的使用

sinye56 2024-11-11 13:37 6 浏览 0 评论



一、简介

Keytool是JDK自带的证书管理工具,在jdk/bin目录下,可以用来生成自签名证书、导入导出证书、打印证书信息等。

回顾下前一章的一些概念:

  • PKI:公钥基础设施
  • X.509 : PKI事实上的标准
  • CSR:向CA申请证书的签名请求文件,用ASN.1标准描述
  • 证书链:证书之间的上下级信任关系
  • 根证书:证书链的最顶层
  • DER:证书二进制格式
  • BER:DER的一个子集
  • CER:一般用于windows的证书文件格式
  • CRT:一般用于Linux的证书,包含公钥和主体信息
  • pem:Base64编码的DER证书
  • p12:证书交换格式,把证书和密钥(公钥+私钥)打包在一起,可以再加一层保护(.pkcs12 .pfx .p12)
  • JKS:Java支持的证书格式。
  • BKS:安卓无法直接支持JKS,使用的是BKS类型证书。
  • Keystore:Keytool将密钥和证书存在一个称为keystore的文件中,包含密钥实体和可信任的证书实体。

二、Java证书工具Keytool的使用

2.1 生成自签名证书.jks

创建一个名为myjks的证书,存放在teststore.jks的密钥库中。

keytool -genkeypair  -alias myjks -keysize 2048 -keyalg RSA -validity 3650 -keystore teststore.jks -storetype JKS 
  • - genkeypair: 生成公私钥对条目,私钥不可见,公钥会以证书格式保存在keystore中。
  • - alias: 指定别名,区分不同条目,默认mykey,每个keystore关联一个alias
  • - keysize: 密钥长度
  • - keyalg: 公私钥算法
  • - validity: 证书过期时间
  • - keystore: 指定存储密钥的位置,不指定的话会生成到用户目录
  • - storetype: 密钥库类型 JKS PKCS等
  • 实际使用时名称与姓氏填域名信息;
  • 先输入的是keystore密钥库的口令。

2.2 导出自签名证书

keytool -export -alias myjks -keystore teststore.jks -file myjks.crt

这个证书就可以分发给客户端使用。

2.2 查看证书信息

keytool -list -v -keystore teststore.jks

2.3 显示证书内容

keytool -list -rfc -keystore teststore.jks -storepass 12345678

2.4 导出cer证书

keytool -alias myjks -exportcert -keystore teststore.jks -file teststore.cer

双击证书,可以查看cer内容,点安装证书就可以导入根证书。

2.5 导出公钥

keytool -list -rfc --keystore teststore.jks | openssl x509 -inform pem -pubkey

三、生成一个根证书来签发二级证书

3.1 生成证书签名请求文件CSR

keytool -certreq -alias myjks -keystore teststore.jks -file teststore.csr

3.2 使用自签名证书作为CA根证书,模拟CA给CSR签发证书

生成模拟CA的密钥对

keytool -genkeypair -alias rootca -keysize 2048 -keyalg RSA -validity 3650 -keystore rootstore.jks -storetype JKS
  • 用CA的私钥签名后与myjks的公钥生成一个证书:
keytool -gencert -alias rootca -keystore rootstore.jks -infile teststore.csr -outfile teststore_new.crt

可以看到teststore_new.crt的签发人已经变了:

3.3 将二级证书导回teststore库中

keytool -import -v -alias rootca -file teststore_new.crt -keystore teststore.jks

这时证书链会发生变化 :

keytool -list -v -keystore teststore.jks

这时可以把root证书导出给客户端内置,服务端绑定二级证书,这样客户端验证时可以用根证书验证二级证书。大部分程序直接使用一级的自签名证书即可,但若需要双向验证,服务端验证客户端时不同客户端最好使用服务端的rootca私钥来签发,这样服务端可以直接用一个rootca的证书验证。实现了动态扩展且客户端的证书不同。

3.4 从teststore导出rootca证书

keytool -export -alias rootca -keystore teststore.jks -file rootca.crt

四、Keytool其它常用命令

// 以rfc模式打印,即base64可见字符,与pem编码格式一样。 -v为详细输出
keytool -printcert -rfc -file rootca.crt

// 删除密钥库中的条目
keytool -delete -alias rootca -keystore teststore.keystore

// 修改证书库密码,输入旧密码或加参数 -storepass 111111
keytool -storepasswd -new 123456 -keystore truststore

// 修改某条目密码
keytool -keypasswd -alias myCA -keypass 654321 -new newpass -storepass 123456 -keystore myCALib

相关推荐

Linux在线安装JDK1.8

首先在服务器pingwww.baidu.com查看是否可以连网然后就可以在线下载一、下载安装JDK1.81、在下载安装的同时做好一些准备工作...

Linux安装JDK,超详细

1、了解RPMRPM是Red-HatPackageManager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux...

Linux安装jdk1.8(超级详细)

前言最近刚购买了一台阿里云的服务器准备要搭建一个网站,正好将网站的一个完整搭建过程分享给大家!#一、下载jdk1.8首先我们需要去下载linux版本的jdk1.8安装包,我们有两种方式去下载安装...

Linux系统安装JDK教程

下载jdk-8u151-linux-x64.tar.gz下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.ht...

干货|JDK下载安装与环境变量配置图文教程「超详细」

1.JDK介绍1.1什么是JDK?SUN公司提供了一套Java开发环境,简称JDK(JavaDevelopmentKit),它是整个Java的核心,其中包括Java编译器、Java运行工具、Jav...

Linux下安装jdk1.8

一、安装环境操作系统:CentOSLinuxrelease7.6.1810(Core)JDK版本:1.8二、安装步骤1.下载安装包...

Linux上安装JDK

以CentOS为例。检查是否已安装过jdk。yumlist--installed|grepjdk或者...

Linux系统的一些常用目录以及介绍

根目录(/):“/”目录也称为根目录,位于Linux文件系统目录结构的顶层。在很多系统中,“/”目录是系统中的唯一分区。如果还有其他分区,必须挂载到“/”目录下某个位置。整个目录结构呈树形结构,因此也...

Linux系统目录结构

一、系统目录结构几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树...

Linux文件查找

在Linux下通常find不很常用的,因为速度慢(find是直接查找硬盘),通常我们都是先使用whereis或者是locate来检查,如果真的找不到了,才以find来搜寻。为什么...

嵌入式linux基本操作之查找文件

对于很多初学者来说都习惯用windows操作系统,对于这个系统来说查找一个文件简直不在话下。而学习嵌入式开发行业之后,发现所用到的是嵌入式Linux操作系统,本想着跟windows类似,结果在操作的时...

linux系统查看软件安装目录的方法

linux系统下怎么查看软件安装的目录?方法1:whereis软件名以查询nginx为例子...

Linux下如何对目录中的文件进行统计

统计目录中的文件数量...

Linux常见文件目录管理命令

touch用于创建空白文件touch文件名称mkdir用于创建空白目录还可以通过参数-p创建递归的目录...

Linux常用查找文件方法总结

一、前言Linux系统提供了多种查找文件的命令,而且每种查找命令都具有其独特的优势,下面详细总结一下常用的几个Linux查找命令。二、which命令查找类型:二进制文件;...

取消回复欢迎 发表评论: