Java中keytool的使用

目录
  • Keytool简单介绍
  • keytool的使用
    • 1.相关概念
    • 2.相关命令
    • 2.生成秘钥库
    • 3.查看证书
    • 5.导出证书
    • 6.修改密码

Keytool简单介绍

keytool 是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。在JDK 1.4以后的版本中都包含了这一工具,它的位置为“%JAVA_HOME%\bin\keytool.exe”。

keytool的使用

keytool为java原生自带,安装java后不需要再进行安装,作为密钥和证书管理工具,方便用户能够管理自己的公钥/私钥及证书,用于认证服务。

1. 相关概念

keystore
keytool将密钥(key)和证书(certificates)存储在keystore文件中,

密钥需要存储在密钥库中

2. 相关命令

-alias 产生别名
-keystore 指定密钥库的名称(就像数据库一样的证书库,可以有很多个证书,cacerts这个文件是jre自带的,你也可以使用其它文件名字,如果没有这个文件名字,它会创建这样一个)
-storepass 指定密钥库的密码
-keypass 指定别名条目的密码
-list 显示密钥库中的证书信息
-v 显示密钥库中的证书详细信息
-export 将别名指定的证书导出到文件
-file 参数指定导出到文件的文件名
-delete 删除密钥库中某条目
-import 将已签名数字证书导入密钥库
-keypasswd 修改密钥库中指定条目口令
-dname 指定证书拥有者信息
-keyalg 指定密钥的算法
-validity 指定创建的证书有效期多少天
-keysize 指定密钥长度

2. 生成秘钥库

生成密钥库的同时生成一个密钥对,并且密钥库和密钥对都是需要密码的

keytool -genkey -keystore "/Users/..../tmp/keytool/test.keystore" -alias mytest -keyalg RSA -validity 365

填写相关信息,生成密钥库和密钥对

参数说明:
-genkey: 表示生成密钥对(公钥和私钥)

-keystore:每个 keytool 命令都有一个 -keystore 选项,用于指定 keytool 管理的密钥仓库的永久密钥仓库文件名称及其位置。如果不指定 -keystore 选项,则缺省密钥仓库将是宿主目录中(由系统属性的"user.home"决定)名为 .keystore 的文件。如果该文件并不存在,则它将被创建。

-alias:指定密钥条目的别名,该别名是公开的。

-keyalg:指定密钥的算法,如:RSA、DSA(如果不指定默认采用DSA))

-validity:指定创建的证书有效期多少天

3. 查看证书

keytool -list -v -keystore test.keystore -storepass 123456

-list 列出证书
-v 显示详细信息
-keystore 指定密钥库
-storepass 指定密钥库的解密密码
-rfc 以可编码方式打印证书

keytool -list -rfc -keystore ./test.keystore -storepass 789789

4. 导入证书

keytool -import -alias test1 -file ./test.crt -keystore ./test.keystore -storepass 789789

5. 导出证书

keytool -export -alias mytest -keystore ./test.keystore -file ./test.crt -storepass 789789

6.修改密码

修改密钥库中指定条目的密码

keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new 新密码 -storepass keystore密码 -keystore 所在的密钥库

修改密钥库的密码

keytool -storepasswd -keystore ./yushan.keystore(需修改口令的keystore) -storepass 123456(原始密码) -new yushan(新密码)

到此这篇关于Java中keytool的使用的文章就介绍到这了,更多相关Java keytool的使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java结合keytool如何实现非对称加密与解密详解

    前言 参考:java结合keytool实现非对称签名与验证 那一篇讲签名,这一篇将加密解密.在java安全体系中,签名属于JAAS模块,加解密属于JCE模块. keytool的使用 keytool是JDK自带的一个密钥库管理工具.这里只用到了keytool的部分功能,包括生成密钥对,导出公钥等.keytool生成的公钥/私钥对存放到一个到了一个文件中,这个文件有密码保护,通称为keystore. 生成密钥对 $ keytool -genkey -alias signLegal -keystore

  • java结合keytool如何实现非对称签名和验证详解

    前言 本文主要介绍了关于java结合keytool实现非对称签名和验证的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 参考 还有姊妹篇:java结合keytool实现非对称加密和解密 keytool的使用 keytool是JDK自带的一个密钥库管理工具.这里只用到了keytool的部分功能,包括生成密钥对,导出公钥等.keytool生成的公钥/私钥对存放到一个到了一个文件中,这个文件有密码保护,通称为keystore. 生成密钥对 $ keytool -genkey

  • Java 使用keytool创建CA证书的操作

    keytool是一个密钥和证书管理工具 1.keytool工具位置 keytool工具在 JDK 的安装目录的 bin 目录下面 2.keytool工具命令展示 打开命令行进入 bin 目录,然后输入命令 keytool.exe,就能看见keytool工具支持哪些命令,如下图所示: 注意下面的用法提示:使用 "keytool -command_name -help" 获取 command_name 的用法 3.查看具体命令用法 这里我们使用 -genkeypair 命令来创建密钥库,先

  • Java中keytool的使用

    目录 Keytool简单介绍 keytool的使用 1.相关概念 2.相关命令 2.生成秘钥库 3.查看证书 5.导出证书 6.修改密码 Keytool简单介绍 keytool 是个密钥和证书管理工具.它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务.在JDK 1.4以后的版本中都包含了这一工具,它的位置为“%JAVA_HOME%\bin\keytool.exe”. keytool的使用 keytool为java原

  • 详解Java中@Override的作用

    详解Java中@Override的作用 @Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 1.可以当注释用,方便阅读: 2.编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错.例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法. 举例:在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性. @Overr

  • 详解Java中多线程异常捕获Runnable的实现

    详解Java中多线程异常捕获Runnable的实现 1.背景: Java 多线程异常不向主线程抛,自己处理,外部捕获不了异常.所以要实现主线程对子线程异常的捕获. 2.工具: 实现Runnable接口的LayerInitTask类,ThreadException类,线程安全的Vector 3.思路: 向LayerInitTask中传入Vector,记录异常情况,外部遍历,判断,抛出异常. 4.代码: package step5.exception; import java.util.Vector

  • Java中的静态内部类详解及代码示例

    1. 什么是静态内部类 在Java中有静态代码块.静态变量.静态方法,当然也有静态类,但Java中的静态类只能是Java的内部类,也称为静态嵌套类.静态内部类的定义如下: public class OuterClass { static class StaticInnerClass { ... } } 在介绍静态内部类之前,首先要弄清楚静态内部类与Java其它内部类的区别. 2. 内部类 什么是内部类?将一个类的定义放在另一个类的内部,就是内部类.Java的内部类主要分为成员内部类.局部内部类.

  • 浅谈Java中Unicode的编码和实现

    Unicode的编码和实现 大概来说,Unicode编码系统可分为编码方式和实现方式两个层次. 编码方式 字符是抽象的最小文本单位.它没有固定的形状(可能是一个字形),而且没有值."A"是一个字符,"€"也是一个字符.字符集是字符的集合.编码字符集是一个字符集,它为每一个字符分配一个唯一数字. Unicode 最初设计是作为一种固定宽度的 16 位字符编码.也就是每个字符占用2个字节.这样理论上一共最多可以表示216(即65536)个字符.上述16位统一码字符构成基

  • java中初始化MediaRecorder的实现方法

    java中初始化MediaRecorder 实现代码: private boolean initializeVideo() { Log.v(TAG, "initializeVideo"); if (mSurfaceHolder == null) { Log.v(TAG, "SurfaceHolder is null"); return false; } mMediaRecorderRecording = true; if (mMediaRecorder == nul

  • java中的可变参数使用方法

    java中的可变参数使用方法 可变参数时Java 1.5新增的方法,可变参数方法接收0个或者多个指定类型的参数,可变参数机制通过先创建一个数组,数组的大小为在调用位置所传递的参数数量,然后将参数值传到数组中,最后将数组传递给方法.如: public class Test{ public int sum(int... args) { int sum = 0; for (int arg : args) { sum += arg; } return sum; } } 可变参数提供了方便,但是使用可变参

随机推荐