keytool命令使用参考

news2024/12/26 10:42:28

Keytool 是一个Java应用程序,用于管理和维护数字证书和密钥。它通过命令行界面提供了一系列的操作,使得用户可以方便地创建、导入、导出和管理密钥库(keystore)中的证书和密钥。以下是关于keytool命令的详细介绍:

(1)-genkeypair

-genkeypair命令可以产生密钥对(一个公钥与关联的私钥),将公钥打包至X.509 v3自签名证书中,证书以单元素证书链的形式存储。该证书链与私钥存储在密钥库的新条目中,通过-alias选项进行标识

(2)-genseckey

可以创建一个秘密密钥并将其存储在新的SecretKeyEntry中,通过-alias选项进行标识。

(3)-importcert

读取file选项指定的证书或证书链(证书链为PKCS#7格式回复),并将其保存至密钥库中alias选项指定的条目中。若未指定file选项,则从标准输入读取证书或PKCS#7回复。

keytool可以导入X.509版本1、版本2、版本3的证书,以及PKCS#7格式的证书组成的证书链。被导入的数据需要为二进制格式,或可打印的编码格式(即Base64编码)。当导入Base64编码格式的证书时,证书数据的头部需要以"-----BEGIN"开头,尾部需要以"-----END"开头。

以下两种情况需要将证书导入密钥库:

a.将证书添加到密钥库的受信任证书列表中;
b.将提交给CA的证书签名请求对应的CA返回的证书回复导入密钥库。

在早期的版本中,该命令的名字为-import。在当前版本与以后的版本中,旧名称仍然被支持,但推荐使用新名字-importcer

(4)-list

用于打印-alias选项标识的密钥库条目的内容。如果未指定-alias选项,密钥库的全部内容将会被打印。

该命令默认打印证书的MD5指纹。当指定了-v选项时,会使用可读的形式进行打印,包含额外的信息,如所有者、所有者、序列号等。当指定了-rfc选项时,证书内容会以Internet RFC 1421标准定义的可打印编码格式进行输出。

-v与-rfc选项不可以同时指定。

(5)-printcert

从-file选项指定的文件中读取证书,并将其内容以可读的形式进行指定。若未指定-file选项,则从标准输入读取证书。

被查看的证书可为二进制编码形式或Internet RFC 1421标准定义的可打印编码格式。

(6)-delete

用于从密钥库中删除-alias选项对应的条目。当未指定-alias选项时,将会提示输入。

(7)-storepass

storepass选项对应的密码用于保护密钥库的完整性。storepass必须为至少6个字节。当需要操作密钥库内容时,所有的命令都需要指定storepass选项。对于这些命令,如果-storepass选项未在命令行中指定,keytool将会提示用户。

当从密钥库检索信息时,密码是可选的;如果不指定密码,被检索信息的完整性将无法检查,且会有警告显示。

3、相关选项默认值:
(1)-alias

指定密钥库操作的条目对应的别名,默认值为"mykey"。

(2)-keyalg

keyalg选项指定生成密钥对或私钥时使用的算法,1.6版本后默认值与生成秘钥的命令有关。如下:

JRE版本    keyalg默认值
1.5    DSA
1.6    DSA(-genkeypair) & DES(-genseckey)
1.7    DSA(-genkeypair) & DES(-genseckey)
1.8    DSA(-genkeypair) & DES(-genseckey)
(3)-keystore

指定密钥库文件位置,默认值为用户目录(C:\Users\Administrator)的.keystore文件。

(4)-sigalg

sigalg选项指定对自签名证书或证书签名请求进行签名时使用的算法,sigalg对应的算法需要与keyalg对应的算法兼容。在生成公/私钥对时,sigalg选项对应的签名算法从底层私钥的算法衍生而来。

JRE版本    sigalg选项默认值
1.5    SHA1withDSA(底层私钥为DSA类型),MD5withRSA(底层私钥为RSA类型)
1.6    SHA1withDSA (底层私钥为DSA类型),SHA256withRSA (底层私钥为RSA类型)
1.7    SHA1withDSA (底层私钥为DSA类型),SHA256withRSA (底层私钥为RSA类型),SHA256withECDSA (底层私钥为EC类型)
1.8    SHA1withDSA (底层私钥为DSA类型),SHA256withRSA (底层私钥为RSA类型),SHA256withECDSA (底层私钥为EC类型)
(5)-keysize

指定生成的密钥长度,默认值如下:

JRE版本    keysize默认值
1.5    1024
1.6    
1024 (使用-genkeypair)

56 (使用-genseckey且-keyalg选项为"DES")

168 (使用-genseckey且-keyalg选项为"DESede")

1.7    
2048 (使用-genkeypair且-keyalg为"RSA")

1024 (使用-genkeypair且-keyalg为"DSA")

256 (使用-genkeypair且-keyalg为"EC")

56 (使用-genseckey且-keyalg为"DES")

168 (使用-genseckey且-keyalg为"DESede")

1.8    
2048 (使用-genkeypair且-keyalg为"RSA")

1024 (使用-genkeypair且-keyalg为"DSA")

256 (使用-genkeypair且-keyalg为"EC")

56 (使用-genseckey且-keyalg为"DES")

168 (使用-genseckey且-keyalg为"DESede")

(6)-validity

指定有效期,单位为天,默认值为90

(7)-storetype

指定密钥库的存储类型,默认值为Java安全属性文件java.security中的"keystore.type"属性值(jks)

秘钥说明:

JKS:

JKS是内置的默认密钥库实现类型,由Sun Microsystems提供。JKS类型将密钥库以文件形式实现,利用专有的密钥库类型。它对每个私钥使用其私有的密码进行保护,同时对整个密钥库使用一个密码(有可能不同)保护其完整性。密钥库类型名称不区分大小写。例如,“jks"被认为等同于"JKS”。

JCEKS:

"JCEKS"是另一种替代的专用密钥库格式,与"JKS"相比,"JCEKS"使用更健全的加密方式,使用基于口令的3DES加密。

Sun的"JCEKS"实现可以对"JKS"密钥库解析并转换为"JCEKS"格式。你可以将"JKS"类型的密钥库升级为"JCEKS"类型,通过修改密钥库中私钥条目的密码,需要指定"-storetype jceks"作为密钥库类型。

PKCS12:

"PKCS12"是另一种选项,这是一种跨平台的密钥库,基于RSA PKCS12个人信息交换标准。这个标准主要用于存储或传输用户的私钥、证书以及各种秘密。

DKS:
"dks"是域密钥库,它是密钥库的集合,表现为一个逻辑上单独的密钥库

PKCS11:

当密钥库的类型为pkcs11时,为支持PKCS#11令牌的密钥库。

JDK版本    支持的秘钥库类型
1.5    JKS,PKCS12
1.6    JKS,PKCS12,JCEKS
1.7    JKS,PKCS12,JCEKS
1.8    JKS,PKCS12,JCEKS,DKS,PKCS11

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1289159.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

#Ts篇:PickOmit协变逆变Partial interface 与 type 有何区别

Pick Pick 接受两个类型参数&#xff0c;T 表示要从中选择属性的类型&#xff0c;K 表示选择的属性名的联合类型。通过映射类型&#xff0c;遍历联合类型 K 中的每个属性&#xff0c;然后从类型 T 中选择相应的属性。 type Pick<T, K extends keyof T> {[P in K]: T[P…

每天一点python——day88

#每天一点Python——88 #编程两大思想【面向过程与面向对象】 #如图&#xff1a; 面向过程的线性思维&#xff1a; 类似于做菜一步步的来&#xff0c;先怎么样怎么样&#xff0c;再怎么样 如果不一步步的来&#xff0c;例如先炒菜再点火&#xff0c;这样是做不好的 面向对象&a…

java--匿名内部类

1.匿名内部类 ①就是一种特殊的局部内部类&#xff1b;所谓匿名&#xff1a;指的是程序员不需要为这个类声明名字。 ②特点&#xff1a;匿名内部类本质就是一个子类&#xff0c;并会立即创建出一个子类对象。 ③作用&#xff1a;用于更方便的创建一个子类对象。 2.匿名内部类…

德迅猎鹰(云蜜罐)有什么用

蜜罐&#xff08;Honeypot&#xff09;是一种安全技术&#xff0c;用于吸引和欺骗攻击者&#xff0c;以便收集关于攻击行为的信息和情报。它模拟了一个脆弱的系统、服务或网络资源&#xff0c;看起来对攻击者具有吸引力&#xff0c;但实际上是为了引诱攻击者暴露其攻击手法和意…

网络安全缓冲区溢出实验

实验要求实验步骤函数 f00()函数 f01()函数 f02() 实验要求 C 程序 homework08.c 的主函数如下&#xff1a; int main(int argc, char * argv[]) { init_buf(Lbuffer, LEN);switch(argc) {case 1: f00(); break;case 2: f01(); break;case 3: f02(); break; default: f00(); …

算法-贪心思想

贪心的思想非常不好解释&#xff0c;而且越使用权威的语言解释越难懂。而且做题的时候根据自己的理解可能直接做出来&#xff0c;但是非要解释一下怎么使用的贪心的话&#xff0c;就懵圈了。一般来说&#xff0c;贪心的题目没有固定的套路&#xff0c;一题一样&#xff0c;不过…

高压探头高压衰减棒的使用方法与注意事项

HVP-15HF高压探头最大量测电压为10kV DC / 7kV AC rms / 20kV p-p。 频宽高达40MHz&#xff0c;超低噪声( S/N比 )60dB at 1kHz。 搭配转接器PL-10可连接到电表使用。 操作方法&#xff1a; 1、先将接地线连接在良好的接地点上。 2、将BNC探头连接在示波器的输入端上。 3、设定…

【MarginNote教程】MarginNote2思维导图如何用xmind打开

1. 使用iThoughts打开思维导图 MarginNote2打开需要打印的笔记&#xff0c;左上角分享这里选择iThoughts。iThoughts软件是需要付费&#xff0c;但用iThoughts2go同样可以实现。 (我们提前下载好iThoughts2go) 这里我下载在平板上&#xff0c;图标如图所示 2.进行xmind格式…

BUU LFI COURSE 1

二 打开链接发现有这么一串php代码 阅读发现是GET传参&#xff0c;传入的参数是file 传一下试试 页面会报错 我们知道了他的路径是在/var/www/html/index.php 这个下面 然后想办法返回上一级&#xff0c;就是../ 然后尝试传参 一个../不够 他的父级目录有好几个&#xff0…

每天一点python——day87

#每天一点Python——87 #Pycharm程序调试 #例&#xff1a;【我想输出1-10】 i1 while i<10:print(i) #会一直输出1{我想输出一到十&#xff0c;但是他一直输出1}【如果想找到问题出现在什么地方&#xff1a;就需要一步步调试】 #那么怎么调试呢 #前面声明是没有错的&#x…

【虚拟机】Docker基础 【二】【数据卷和挂载本地目录】

2.2.数据卷 容器是隔离环境&#xff0c;容器内程序的文件、配置、运行时产生的容器都在容器内部&#xff0c;我们要读写容器内的文件非常不方便。大家思考几个问题&#xff1a; 如果要升级MySQL版本&#xff0c;需要销毁旧容器&#xff0c;那么数据岂不是跟着被销毁了&#x…

Toolbox零部件调用深度解析

很多时候我们需要用到SOLIDWORKS设计库中的自带零部件&#xff0c;去完成零部件的调用&#xff0c;或者在它上面的基础之上进行更改&#xff0c;来满足我们的使用要求&#xff0c;但似乎并不怎么可行&#xff0c;很多时候更改过的尺寸和调用的规格会自己乱码&#xff0c;下面介…

if与switch语句的运用—输出成绩

1.给出一个百分制成绩&#xff0c;要求输出成绩等级A、B、C、D、E。90分以上为A&#xff0c;81-89分为B&#xff0c;70-79分为C&#xff0c;60&#xff0d;69分为D&#xff0c;60分以下为E。 if语句实现 #include <stdio.h> int main() { int score; printf(&qu…

同旺科技 USB TO RS-485 定制款适配器--- 拆解(三)

内附链接 1、USB TO RS-485 定制款适配器 ● 支持USB 2.0/3.0接口&#xff0c;并兼容USB 1.1接口&#xff1b; ● 支持USB总线供电&#xff1b; ● 支持Windows系统驱动&#xff0c;包含WIN10 / WIN11系统32 / 64位&#xff1b; ● 支持Windows RT、Linux、Mac OS X、Windo…

报错解决:Fatal error: ‘THC/THC.h‘: No such file or directory

报错解决&#xff1a;Fatal error: THC/THC.h: No such file or directory 报错原因解决方法总结参考文献 报错 博主的软硬件环境&#xff08;供参考&#xff09;&#xff1a; LinuxNVIDIA GeForce RTX 3090CUDA 11.6gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0Pytorch&#…

Hadoop学习笔记(HDP)-Part.15 安装HIVE

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

JDK 9 模块化系统 (Module System) 和 多版本兼容 Jar (Multi-Release Jar)

博文目录 文章目录 Module System原因JDK 模块化模块描述文件关键字 启用模块化测试结论 Multi-Release jar (MRJAR)原因原理结论用 IDEA 创建多版本兼容 Jar项目结构pom.xml测试 Module System 原因 Java 9引入了模块化系统的主要原因是为了解决Java平台面临的复杂性和可维…

12 月 10 日,融云在 Google DevFest 上海站等你!

Welcome to DevFest!RongCloud2023 Google DevFest 上海站关注【融云全球互联网通信云】了解更多 时间&#xff1a;2023 年 12 月 10 日&#xff08;周日&#xff09;地点&#xff1a;上海市浦东新区新金桥路 1599 号&#xff0c;东方万国宴会中心 (下沉式广场)主讲&#xff1a…

反序列化漏洞详解(二)

目录 pop链前置知识&#xff0c;魔术方法触发规则 pop构造链解释&#xff08;开始烧脑了&#xff09; 字符串逃逸基础 字符减少 字符串逃逸基础 字符增加 实例获取flag 字符串增多逃逸 字符串减少逃逸 延续反序列化漏洞(一)的内容 pop链前置知识&#xff0c;魔术方法触…

etcd 与 Consul 的一致性读对比

本文分享和对比了 etcd 和 Consul 这两个存储的一致性读的实现。 作者&#xff1a;戴岳兵&#xff0c;爱可生研发中心工程师&#xff0c;负责项目的需求开发与维护工作。 爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。 本…