什么是.jks(.keystore)文件

.jks 文件就是Java KeyStore (JKS)文件。它的用于存储加密密钥和证书。这个jks可以用在SSL加密,Android应用签名,Java应用等上面。

其实,我们还见过.keystore文件,它和.jks文件是一样的。 .jks 文件是.keystore 文件的其中一种。区别在于 .jks 文件是Java应用的默认keystore。

既然.jks文件存储了加密密钥和证书,那么具体有哪些呢?一个.jks文件可以存储如下信息:

  1. Private keys 私钥
  2. Public keys 公钥
  3. Certificates 证书
  4. Passwords 密码

因为它存储了这么多敏感的信息,所以一定要保护好这个文件。通过keytool这个JDK提供的工具查看一下.jks文件里大概有什么:

keytool -v -list -alias kyunban -keystore kyunban.jks
Enter keystore password:  
Alias name: kyunban
Creation date: Jan 6, 2024
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: C=CN, ST=GD, L=GZ, O=kyunban, OU=kyunban, CN=kyunban
Issuer: C=CN, ST=GD, L=GZ, O=kyunban, OU=kyunban, CN=kyunban
Serial number: 1
Valid from: Sat Jan 06 12:58:51 CST 2024 until: Wed Dec 30 12:58:51 CST 2048
Certificate fingerprints:SHA1: D9:2B:1E:52:E4:38:8B:4F:F6:45:76:03:47:40:A9:98:33:99:F7:E8SHA256: 59:2B:D2:33:7B:81:38:E9:F9:28:F8:16:E7:9F:9C:74:E4:06:71:C6:2C:71:6B:AE:54:38:4A:1A:38:5D:F0:A8
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 1

从输出的信息中,我们可知有

  1. 私钥
  2. 证书
  3. 证书指纹
  4. 公钥

等等。

还可以通过KeyStore Explorer这个工具查看.jks文件中的内容,如:

Properties for 'kyunban.jks'File: /Users/juklinglee/AndroidStudioProjects/P2PIM/keys/kyunban.jksType: PKCS12Provider: SUNKeysNoneKey PairskyunbanPrivate KeyLocked - unlock to get propertiesCertificateskyunbanVersion: 1Subject: C=CN,ST=GD,L=GZ,O=kyunban,OU=kyunban,CN=kyunbanIssuer: C=CN,ST=GD,L=GZ,O=kyunban,OU=kyunban,CN=kyunbanSerial Number: 0x01Valid From: 1/6/2024, 12:58:51 PM CSTValid Until: 12/30/2048, 12:58:51 PM CSTPublic KeyAlgorithm: RSAKey Size: 2048 bitsFormat: X.509Encoded: 0x30820122300D06092A864886F70D01010105000382010F003082010A0282010100C827ECF085CB2BA3E30E8FA04194D7187AB8AA63689E28D38FA342878878B2DB96E92EB9016FF39630047D0033B4DC33F98ADC5E5ED82F83B1AC53B8E138FB5AF86B89CF0173F570C13E96679EFE358EAD3BD98C13E67B619B5FBA0F67656B39CD17595346E4418348529FCF85ACBCDDE4E15D7B8A179EF271AC24883BEAAE3690E06EA433B711F3AC00DF83951CE4ECBE174FB8E5598A5CE51DA94BA393AD9F5676D811059951D563568BF458AF6C4C96A58EAFD7F0FAE440118BC979DC77E417B41297F5FD6CD507007DCEB31AFE10B9477FBF4A49BD77E989F93AD3D804A426E7C5B92D6F003E5286899FFC66718662CE9F735B9CF56BEFB0A7BE0DC4D5630203010001Public Exponent: 0x10001Modulus: 0xC827ECF085CB2BA3E30E8FA04194D7187AB8AA63689E28D38FA342878878B2DB96E92EB9016FF39630047D0033B4DC33F98ADC5E5ED82F83B1AC53B8E138FB5AF86B89CF0173F570C13E96679EFE358EAD3BD98C13E67B619B5FBA0F67656B39CD17595346E4418348529FCF85ACBCDDE4E15D7B8A179EF271AC24883BEAAE3690E06EA433B711F3AC00DF83951CE4ECBE174FB8E5598A5CE51DA94BA393AD9F5676D811059951D563568BF458AF6C4C96A58EAFD7F0FAE440118BC979DC77E417B41297F5FD6CD507007DCEB31AFE10B9477FBF4A49BD77E989F93AD3D804A426E7C5B92D6F003E5286899FFC66718662CE9F735B9CF56BEFB0A7BE0DC4D563Signature Algorithm: SHA-256 with RSAMD5 Fingerprint: 81:B6:73:05:59:42:28:CA:79:4B:CE:E5:CA:FD:BE:6BSHA-1 Fingerprint: D9:2B:1E:52:E4:38:8B:4F:F6:45:76:03:47:40:A9:98:33:99:F7:E8Trusted CertificatesNone

提取.jks中的私钥来使用:

第一步,将jks文件转换为PKCS12格式的文件

% keytool -importkeystore -srckeystore kyunban.jks -srcstorepass kyunban -srckeypass kyunban -srcalias kyunban -destalias kyunban -destkeystore kyunban.p12 -deststoretype PKCS12 -deststorepass kyunban123 -destkeypass kyunban123

kyunban.p12就是转换后得到的文件 :

% ls
kyunban.jks     kyunban.p12

从PKCS12格式的文件提取私钥

我们用openssl命令再从PKCS12格式文件中提取出私钥:

 % openssl pkcs12 -in kyunban.p12 -nodes -nocerts -out private_key.pem
Enter Import Password:% ls
kyunban.jks     kyunban.p12     private_key.pem

从PKCS12格式的文件提取公钥

我们用openssl命令再从PKCS12格式文件中提取出公钥:

//  -nokeys 不要输出私钥
// -in 指定输入的p12文件
// -out 指定输出文件名
% openssl pkcs12 -in kyunban.p12 -nokeys -out public_key.pem
Enter Import Password:
% ls
kyunban.jks  kyunban.p12  private_key.pem public_key.pem

提取出来的公钥,实际上是一份证书,不包含私钥。

常见 SSL 证书格式

  1. .der .cer: 二进制文件,只保存证书,不保存私钥。
  2. .pem:可保存证书,可保存私钥。
  3. .crt:不保存私钥。
  4. .pfx .p12: 二进制文件,同时包含证书和私钥,一般有密码保护。
  5. .jks: 二进制文件,同时包含证书和私钥,一般有密码保护

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

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

相关文章

Java学习笔记-day02-在IDEA中使用git忽略提交.idea下的文件

1.在根目录.gitignore文件排除.idea目录 ### IntelliJ IDEA ### .idea2.使用重置Head还原已经add过的文件 创建项目时,可能会有.idea中的文件先add到git后再创建的.gitignore文件,导致文件commit时无法排除,如下所示。 使用重置Head将文件…

Python从入门到网络爬虫(JSON详解)

前言 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。和XML相比,JSON更加简洁和易于读写,同时也更加易于解析和生成。JSON的基本数据类型包括字符串、数字、布尔、null以及数组和对象两种复合类型。各种编程语言都…

深度学习 常考简答题--[HBU]期末复习

目录 1.为什么要引用非线性激活函数? 2.什么是超参数?如何优化超参数? 3.线性回归通常使用平方损失函数,能否使用交叉熵损失函数? 4.平方损失函数为何不适用于解决分类问题?(和第3题一块复习) ​编辑 …

新年新风貌 苏州金龙蔚蓝公交护航高贸区“效率巴士”!

1月4日,由苏州市公交集团园区公司与园区高贸区管委会联合推出的4条“高贸区效率巴士”正式开行,这四条线路惠及包括苏州群策科技有限公司、荣旗工业科技有限公司等在内的20余家高贸区重点企业。线路开行5天来,效率巴士让不少企业员工感受到了…

开发者与下雨天:一种独特的情感联结

在科技行业中,开发者是一个独特的群体,他们以逻辑严密的思维和对技术的执着追求为世界编织出无数精彩的数字画卷。而在日常生活中,一个常被提起的现象是许多开发者似乎对下雨天有着特别的喜爱。本文旨在探讨这种现象背后可能存在的心理、生理…

电口模块SFP-GE-T:实现光口与电口之间的转换

电口模块是一种用于实现光口转电口功能的设备,在网络通信中起到重要作用。电口模块没有光电转换的过程,只是传输电信号。本文介绍电口模块的作用、分类、以及使用方法。 一、什么是电口模块 电口模块又被称为光转电模块,它是一种支持热插拔…

LeetCode——447. 回旋镖的数量

大佬,牛!!! 题目:给你一个n*2的数组,表示n个点。然后让你从中选择三个点i,j,k,使得i到j和i到k的欧氏距离相等。问一共有多少种情况。需要注意的是,假设i,j,k是满足条件的&#xff0…

学校服务器安装anaconda并配置pytorch环境

学校服务器安装anaconda并配置pytorch环境 1.下载Anaconda2.传到xftp中3.在终端运行脚本命令4.安装pytorch4.1 查看cuda版本4.2 创建自己的环境4.3 下载pytorch4.4 验证pytorch是否安装成功 参考视频:远程服务器安装anaconda并配置pytorch环境 使用服务器运行项目&a…

软件测试大作业||测试计划+测试用例+性能用例+自动化用例+测试报告

xxx学院 2023—2024 学年度第二学期期末考试 《软件测试》(A)试题(开卷) 题目:以某一 web 系统为测试对象,完成以下文档的编写: (满分 100 分) (1&am…

简单易懂的理解 PyTorch 中 Transformer 组件

目录 torch.nn子模块transformer详解 nn.Transformer Transformer 类描述 Transformer 类的功能和作用 Transformer 类的参数 forward 方法 参数 输出 示例代码 注意事项 nn.TransformerEncoder TransformerEncoder 类描述 TransformerEncoder 类的功能和作用 Tr…

普中STM32-PZ6806L开发板(有点悲伤的故事)

简介 关于我使用 普中STM32-PZ6806L做了做了一些实验, 不小心输入12V,导致核心板等被烧坏, 为了利用电路和资源, 搭建了STM32F103CBT6并使用普中STM32-PZ6806L上面没有烧坏的模块的故事。 普中STM32-PZ6806L开发板 这块的STM32F103ZET6部分算是Closed了, 不准备换核…

docker compose 搭建ES集群的详细步骤,并去掉验证,使用http访问

要使用 Docker Compose 搭建一个 Elasticsearch 集群,并配置为不使用验证,同时使用 HTTP 访问,你可以遵循以下步骤: 步骤 1: 安装 Docker 和 Docker Compose 确保你的系统上已安装 Docker 和 Docker Compose。如果尚未安装&…

freertos——任务通知知识总结与任务通知模拟及信号量实验、消息邮箱实验、事件标志组实验

1.任务通知概念 任务通知:用来通知任务的,任务控制块中的结构体成员变量 ulNotifiedValue就是这个通知值,不需要另外创建一个结构体可以直接接受别人发过来的通知 2.任务通知的优势及劣势 任务通知的优势: 效率更高 &#xff…

Hive基础知识(四):Hive 元数据配置到 MySQL

1. 拷贝驱动 将 MySQL 的 JDBC 驱动拷贝到 Hive 的 lib 目录下 [zzdqhadoop100 software]$ cp /home/atguigu/mysql-connector-java-5.1.37.jar $HIVE_HOME/lib 2. 配置 Metastore 到 MySQL 1)在$HIVE_HOME/conf 目录下新建 hive-site.xml 文件 [zzdqhadoop100 s…

DevExpress历史安装文件包集合

Components - DevExpress.NET组件安装包此安装程序包括所有 .NET Framework、.NET Core 3 和 .NET 5、ASP.NET Core 和 HTML/JavaScript 组件和库(Web和桌面应用程序开发只需要安装此文件即可)。 注意:自DevExpress21.1版本之后,该…

Python 动态变量名称的使用

Python 动态变量名称的使用 引言正文 引言 今天遇到了一个问题,那就是如何在 Python 中使用动态变量名称。那么为什么会想要使用动态变量名称呢?比如,我们有五个对象,分别为: rectangle1 rectangle2 rectangle3 rectangle4 rect…

Altium Designer实用系列(六)----AD问题整理,持续更新......

本篇博客会对粉丝提出的问题进行整理汇总,博客会持续更新… 一、 问题描述 问题1: 为什么我的ad点击设计之后没有update pcb document 原因:由于在工程中只有schDoc文件,没有PcbDoc,而导致没有“设计”–>update …

TypeScript 和 jsdom 库创建爬虫程序示例

TypeScript 简介 TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,可以编译生成纯 JavaScript 代码。TypeScript 增加了可选的静态类型和针对对象的编程功能,使得开发更加大规模的应用容易。 jsdom 简介 jsdom 是一个…

oracle 19c容器数据库数据加载和传输-----SQL*Loader(一)

目录 数据加载 (一)控制文件加载 1.创建用户执行sqlldr 2.创建文本文件和控制文件 3.查看表数据 4.查看log文件 (二)快捷方式加载 1.system用户执行 2.查看表数据 3.查看log文件 外部表 数据加载和传输的工具&#xff1…

【docker】centos7安装harbor

目录 零、前提一、下载离线包二、安装三、访问四、开机自启 零、前提 1.前提是已经安装了docker和docker-compose 一、下载离线包 1. csdn资源:harbor-offline-installer-v2.10.0.tgz 2. 百度云盘(提取码:ap3t):harbo…