什么是.jks(.keystore)文件

2024-01-06 20:52
文章标签 keystore jks

本文主要是介绍什么是.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: 二进制文件,同时包含证书和私钥,一般有密码保护

这篇关于什么是.jks(.keystore)文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/577581

相关文章

jks bks 等的定义 如何将jks转化为bks的

接着上一篇,文中提到的android不和java一样识别jks,所以我们要将其转化成bks这里面我们就系统的介绍下到底该如何去生成jks,bks等等 常用的证书密钥库格式: BKS来自BouncyCastleProvider,它使用的也是TripleDES来保护密钥库中的Key,它能够防止证书库被不小心修改(Keystore的keyentry改掉1个bit都会产生错误),BKS能够跟JKS互操

如何提取JKS文件的证书和私钥?

文章来源 https://jingyan.baidu.com/article/066074d61de50cc3c21cb0ba.html 验证命令如下: > 生成证书文件:keytool -genkey -alias server_cert -keypass 12345678 -keyalg RSA -keysize 1024 -validity 365-keystore

JAVA调用 keytool 生成keystore 和 cer 证书

keytool是一个Java数据证书的管理工具, keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里, 包含两种数据: 密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密) 可信任的证书实体(trusted certificate entries)——只包含公钥

Android 通过已经生产的keystore查看当前签名

查看的当前签名就是微信接口申请的应用签名 具体操作步骤: 1.首先打开终端的命令,找到keyTool所在的目录,比如该Mac系统的目录是/usr/bin/keytool,所以先通过cd命令进入到该keytool所在的bin目录下; 2.找到该工程app所在的.keystore的位置 3.在1中的目录下执行 参考:https://blog.csdn.net/gold_brick/a

从keystore获取debug,正式,签名

使用如下命令 keytool -list -v -keystore debug.keystore cd ~/.android 目录查看debug签名 正式签名,找到正式签名的位置 PS: keytool不是内部外部命令?keytool是jdk里的一个工具,首先将jdk/bin所在的目录加到环境变量的PATH中即可。

修改keystore密码别名等

修改Android签名证书keystore的密码、别名alias以及别名密码 之前在测试Eclipse ADT的Custom debug keystore自定义调试证书的时候,发过一篇关于调试证书规格的博文:Eclipse ADT的Custom debug keystore所需证书规格,提到过自定义调试证书的密码和alias命名以及alias密码都是有规矩的。其实Android应

keytool命令行创建Android安卓 keystore签名

创建keystore 名称 别名 算法 期限  store密码 key密码 keytool -keystore mingcheng.keystore -alias bieming -genkey -keyalg RSA -validity 3650 -storepass storemima -keypass keymima 验证和读取上述创建的keystore信息 keytool -li

Android stuido 中的keystore

简介 我们在开发app的过程中都知道,apk文件会进行签名,保证apk的唯一,而且需要用这个运行的时候,也会根据其密码等做验证。在Eclipse中,或许大家都很清楚了,但是Eclipse编译工具,现在已经不更新了,那你还不更换studio工具,还在等什么,而且studio越来越强大了! 如何生成keystore文件 生成文件,怎么生成了,如何生成? ** 第一步 ** 第二步

Invalid keystore format,获取安全码SHA1值出错

AndroidStudio版本:Android Studio Electric Eel | 2022.1.1 项目运行JDK版本:11.0.15,查看方法如下: 在Terminal 窗口中,获取的Java版本是:1.8.0,修改Java系统环境变量,改成:11.0.15,在dos窗口中Java版本已经变成新的,但在 Terminal窗口获取Java版本依然是1.8.0,所以获取SHA1

android keystore文件转换格式为pk8和x509.pem

android 一般除了使用jarsigner签名 还有使用signapk 后者位于android源码 前者位于jdk中。两者使用的文件格式不同前者使用JKS 后者使用公钥+私钥 是分开的 第一步 先v把keystore文件转换为pkcs12格式 [java]  view plain copy