`

详细讲KeyTool

阅读更多
★ 实例说明
本实例使用J2SDK提供的keytool工具用默认的密钥库和算法创建几个数字证书。


★运行程序
keytool程序运行时加上命令行参数–genkey即可。
在命令行中输入“keytool  –genkey”将自动使用默认的算法生成公钥和私钥,并以交互方式获得公钥持有者的信息。其交互过程如下,其中带下划线的字符为用户键盘输入的内容,其他为系统提示的内容

C:/>keytool -genkey
输入keystore密码:  123456
您的名字与姓氏是什么?
[Unknown]: Liao Weimin1
您的组织单位名称是什么?
[Unknown]: Network Center
您的组织名称是什么?
[Unknown]:  Guangzhou University
您所在的城市或区域名称是什么?
[Unknown]:  ZB
您所在的州或省份名称是什么?
[Unknown]: Guangzhou
该单位的两字母国家代码是什么
[Unknown]:  CN
CN=Liao Weimin1, OU=Network Center, O=Guangzhou University, L=ZB, ST=Guangzhou, C=CN 正确吗?
[否]:  是
输入的主密码
(如果和 keystore 密码相同,按回车):  abcdefg
C:/>
以上操作将生成一个公钥和一个私钥,这里并未指定使用何算法,将使用默认的DSA算法。

同时上述操作将创建一个数字证书,证书中包含了新生成的公钥和一个名字为“CN=Liao Weimin1, OU=Network Center, O=Guangzhou University, L=ZB, ST=Guangzhou, C=CN”的主体(人或机构)的对应关系。其中“CN=Liao Weimin1, OU=Network Center, O=Guangzhou University, L=ZB, ST=Guangzhou, C=CN”是X.500格式的全名,包含了主体的国家、州、城市、机构、单位和名字。这样,这个证书将证明相应的公钥是这个人或机构所拥有的。

以上生成的公钥、私钥和证书都保存在用户的主目录中创建一个默认的文件“.keystore”中。如果是Windows 2000系统,用户主目录是c:/ Documents and Setting/用户名。

由于“.keystore”中包含了私钥,所以是一个需要保密的文件,因此上述操作提示为该文件设置一个密码:“输入keystore密码”,这里因为是第一次使用该密钥库,因此输入的密码“123456”将成为该默认的密钥库的密码(实际使用时应该设置复杂的口令)。以后再使用这个密钥库时必须提供这个口令才可以使用。

以上操作最后还提示“输入的主密码”,这里“mykey”是默认的别名,使用该名字可以在密钥库“.keystore”中找到对应的公钥、私钥和证书。此处输入的密码是对应于该别名的私钥的密码,密钥库中每个别名可以使用不同的密码加以保护。

1.1.2 使用别名
    密钥库中可以存放多个条目(公钥/私钥对和证书),它们在密钥库中以别名(alias)区分。1.1.1小节在使用keytool工具时没有指定别名,因此系统使用了默认的别名mykey。如果再次运行“keytool –genkey”,则系统将提示“keytool错误: java.lang.Exception: 没有创建键值对,别名 已经存在”,因此当密钥库中有多个公钥/私钥对和证书时,应该使用别名。

★ 实例说明
本实例使用J2SDK提供的keytool工具用在默认的密钥库中利用别名增加多个证书。

★运行程序
keytool程序运行时加上命令行参数–alias即可。

在命令行中输入“keytool  –genkey  –alias  liaoweimin2”将自动使用默认的算法生成别名为liaoweimin2的公钥和私钥,并以交互方式获得公钥持有者的信息。其交互过程如下:

C:/>keytool genkey alias liaoweimin2
输入keystore密码:  123456
您的名字与姓氏是什么?
[Unknown]:  Liao Weimin2
您的组织单位名称是什么?
[Unknown]:  Network Center
您的组织名称是什么?
[Unknown]:  SHU
您所在的城市或区域名称是什么?
[Unknown]:  ZB
您所在的州或省份名称是什么?
[Unknown]:  SH
该单位的两字母国家代码是什么
[Unknown]:  CN
CN=Liao Weimin2, OU=Network Center, O=SHU, L=ZB, ST=SH, C=CN 正确吗?
[否]:  是
输入的主密码
(如果和 keystore 密码相同,按回车):



        其中“输入keystore密码:”后面输入的内容必须和1.1.1小节相同的密码,否则将无法访问密钥库,并提示如下错误:“keytool错误: java.io.IOException: Keystore was tampered with, or password was incorrect”,这是因为1.1.1小节已经为默认的密钥库设置了该密码,以后使用该密钥库都必须提供该密码。

        在“输入 的主密码”的提示后这里不妨直接按“回车键”,这样该私钥将使用和密钥库相同的密码“123456”来保护。

        以上操作将在用户主目录的“.keystore”文件中增加一对公钥和私钥(DSA算法),同时增加一个数字证书,证书中包含了新生成的公钥和一个名字为“CN=Liao Weimin2, OU=Network Center, O=Guangzhou University, L=ZB, ST=Guangzhou, C=CN”的主体(人或机构)的对应关系。

1.1.3 使用指定的算法和密钥库和有效期
1.1.1和1.1.2小节中使用的是默认的算法和密钥库,本节介绍如何自己指定算法和密钥库。
★ 实例说明
本实例使用J2SDK提供的keytool工具用RSA算法和在指定的密钥库mykeystore中创建公钥/私钥对和证书。

★运行程序
keytool的keyalg参数可以指定密钥的算法,如果需要指定密钥的长度,可以再加上keysize参数。密钥长度默认为1024位,使用DSA算法时,密钥长度必须在512到1024之间,并且是64的整数倍。

Keytool的-keystore参数可以指定密钥库的名称。密钥库其实是存放密钥和证书的文件,密钥库对应的文件如果不存在自动创建。

-validity参数可以指定所创建的证书有效期是多少天。

如在命令行中输入“keytool genkey alias mytest keyalg RSA keysize 1024 keystore mykeystore validity 4000”将使用RSA算法生成1024位的公钥/私钥对及整数,密钥长度为1024位,证书有效期为4000天。使用的密钥库为mykeystore文件。

C:/java/ch5>keytool genkey alias mytest keyalg RSA keysize 1024 keystore mykeystore validity 4000

输入keystore密码:  wshr.ut

您的名字与姓氏是什么?

    [Unknown]:  Liao Weimin

您的组织单位名称是什么?

    [Unknown]:  Network Center

您的组织名称是什么?

    [Unknown]:  Guangzhou University

您所在的城市或区域名称是什么?

    [Unknown]:  ZB

您所在的州或省份名称是什么?

    [Unknown]:  Guangzhou

该单位的两字母国家代码是什么

    [Unknown]:  CN

CN=Liao Weimin, OU=Network Center, O=Guangzhou University, L=ZB, ST=Guangzhou, C=CN 正确吗?

    [否]:  是

输入的主密码
(如果和 keystore 密码相同,按回车):

C:/java/ch5>

由于当前目录下没有mykeystore文件,因此以上操作将在当前目录建立文件名为mykeystore的文件,并提示输入一个密码加以保护:“输入keystore密码:”。因为这里使用的密钥库和1.1.1小节及1.1.2小节不是同一个文件,因此这里输入的密码和1.1.1小节及1.1.2小节没有必要一致,这里不妨设置为“wshr.ut”。这样,以后再使用这个密钥库文件时必须提供该密码。
        对其中的“输入的主密码”,这里不妨直接按回车键,这样mykeysotre文件中的mytest条目将使用和密钥库相同的密码:“wshr.ut”。
1.2.1 使用Keytool将数字证书导出到文件

★ 实例说明
本实例使用J2SDK提供的keytool工具将指定的证书从密钥库导出为编码过和没编码过两种格式的文件。
★运行程序
使用keytool的export参数可以将别名指定的证书导出到文件,文件名通过file参数指定。如输入如下命令:

C:/java/ch5>keytool export alias liaoweimin2 -file liaoweimin2.cer

输入keystore密码:  123456

保存在文件中的认证

则将默认密钥库中的liaoweimin2条目对应的证书导出到文件liaoweimin2.cer中。由于命令行中没有用storepass给出密码,因此屏幕提示输入keystore密码。由于证书中不包含私钥,因此不需要条目的主密码。

该操作完成后将在当前目录中创建liaoweimin2.cer文件,该文件即是默认密钥库中的liaoweimin2条目对应的证书,它包含了公钥和主体的对应关系,内容也可以公开。
输入如下命令则可以指定密钥库:

C:/java/ch5>keytool export alias lf file lf.cer keystore lfkeystore –storepass wshr.ut
保存在文件中的认证
该操作完成后将在当前目录中创建lf.cer文件。

        如果用文本编辑器打开liaoweimin2.cer或lf.cer,将会发现它是二进制文件,有些内容无法显示,这不利于公布证书。在导出证书时加上-rfc参数则可以使用一种可打印的编码格式来保存证书。如:

C:/java/ch5> keytool export alias mytest file mytest.cer  keystore mykeystore  -storepass wshr.ut -rfc
保存在文件中的认证
则当前目录下将增加一个文件mytest.cer,其内容是编码过的,可以在屏幕上显示、拷贝或打印。如图5-2所示。(打印内容不同)

1.2.2 使用Keytool从文件中显示证书

★ 实例说明
本实例使用J2SDK提供的keytool工具将1.2.3小节导出的证书文件显示出来。
★运行程序
使用keytool的printcert参数可以将1.2.3小节导出到证书文件详细内容显示出来,文件名称通过file参数指定。如:

C:/java/ch5>keytool printcert file  lf.cer
(见自己的屏幕)
对编码过的证书可以同样显示,如:

C:/java/ch5>keytool printcert file  mytest.cer
(见自己的屏幕)

1.2.3 在Windows中从文件显示证书
★ 实例说明
本实例在Windows中直接显示1.2.1小节导出的证书文件。
★运行程序
1.2.3小节导出的证书文件中,只要文件名以.cer为后缀,Windows操作系统就可以直接识别。如在Windows中双击lf.cer图标,将出现窗口。其中包含了证书的所有者、颁发者、有效期等信息,这些信息和使用keytool显示出的信息一致。
由于该证书是用自己的私钥对该证书进行数字签名的,即自己给自己签发的证书,因此窗口中显示警告信息:“该证书发行机构根证书没受信任”。
分享到:
评论

相关推荐

    Keytool与数字证书

    ### Keytool与数字证书 #### 一、Keytool简介及基本操作 **Keytool** 是 Java 开发工具包(JDK)中的一个实用程序,用于管理密钥库(key stores),其中包括私钥(private keys)及其对应的公钥证书(public key ...

    密钥管理工具 Keytool-IUI

    Keytool-IUI 是一个增强版的Java密钥和证书管理工具,它扩展了标准的Java Keytool命令行工具,提供了更友好的用户界面(UI),使得在IT环境中管理和操作数字证书变得更加直观和方便。Keytool是Java Development Kit...

    KeyTool_GUI

    标题“KeyTool_GUI”指的是Java自带的一个命令行工具KeyTool的图形用户界面版本。KeyTool是Java开发工具包(JDK)中用于管理公钥基础设施(PKI)的工具,主要用于创建、管理和导出数字证书、密钥对以及信任存储。在...

    keytool图形化工具

    - **查看证书信息:** 显示Keystore中证书的详细信息,如证书持有者、有效期、签名算法等。 - **信任管理:** 添加、删除和管理信任的根证书颁发机构(CA)。 - **备份与恢复:** 支持Keystore的备份和恢复操作,...

    keytool证书制作工具

    以下是关于`keytool`证书制作工具的详细知识: 1. **基本概念** - **密钥对**:密钥对由一对非对称密钥组成,包括一个公钥和一个私钥。公钥用于加密,私钥用于解密。 - **数字证书**:包含公钥及其拥有者信息的...

    keytoolgui

    4. **查看和管理密钥对和证书**:你可以通过GUI浏览密钥库中的所有条目,查看密钥对的详细信息,或者修改它们的属性。 5. **信任和证书链**:在进行SSL/TLS通信时,需要建立信任。keytoolGUI可以帮助你管理信任的CA...

    java keytool使用例子

    下面我们将详细探讨Java Keytool的使用方法和相关知识点。 1. **证书与密钥对** 数字证书是一种电子文档,用于证明网络实体的身份。它包含了公钥和相关标识信息,由可信的证书颁发机构(CA)签名。密钥对包括一个...

    KeyTool

    5. **查看密钥库信息**:`keytool -list -v -keystore keystore_name.jks`,这将列出密钥库的所有详细信息。 **4. GUI KeyTool工具** 虽然KeyTool通常是通过命令行界面操作的,但也有图形用户界面(GUI)工具,如...

    证书工具KeyTool1.6

    KeyTool是Java SDK提供的一款强大的命令行工具,用于管理和操作数字证书、密钥对以及信任存储库。在本篇中,我们将深入探讨KeyTool 1.6版本及其在数字证书管理中的应用。 首先,让我们理解什么是数字证书。数字证书...

    keytool 加密证书制作

    1. **创建Keystore**:使用`keytool -genkeypair`命令创建一个新的Keystore,需要提供像别名、密码、组织信息等详细参数。 2. **生成自签名证书**:通过`keytool -selfcert`命令,可以在Keystore内生成一个自签名的...

    Android签名工具(keytool)

    keytool -genkey -alias ChangeBackgroundWid get.keystore -keyalg RSA -validity 20000 -eystore ChangeBackgroundWidget.keystore 上面的命令中间不换行,按下“Enter”键,并根据提示填写相关信息,详细信息如下...

    KeyTool 工具生成X.509证书

    KeyTool工具生成X.509证书是Java平台自带的一个命令行工具,它主要用于管理和操作密钥对(公钥和私钥)以及数字证书。在本文中,我们将深入探讨KeyTool的基本用法、X.509证书的概念,以及如何使用KeyTool生成这种...

    keytool建立双向认证

    标题中的“keytool建立双向认证”指的是在Java环境中使用keytool工具进行SSL/TLS协议的双向身份认证(Mutual TLS)配置。双向认证是一种安全通信协议,它要求客户端和服务器都提供身份验证,以确保双方的身份是可信...

    KeyTool IUI v2.3

    3. **查看证书信息**:工具提供了查看证书详细信息的功能,包括发行者、有效期、公钥等,这对于检查证书的合法性至关重要。 4. **管理KeyStore**:用户可以管理多个KeyStore,这在处理不同项目或服务的证书时十分...

    keytool查询apk证书指纹.zip

    本篇将详细讲解如何使用`keytool`来查询APK的证书指纹,包括MD5、SHA1和SHA256等安全摘要算法的指纹。 首先,你需要安装Java开发工具包(JDK)。这里提供了一个名为"jdk-8u261-windows-x64.exe"的文件,这应该是JDK...

    java keytool

    通过上述的详细介绍,我们不仅了解了 `keytool` 的基本概念,还掌握了如何使用它来执行各种常见的密钥和证书管理任务。这对于开发安全的 Java 应用程序非常重要。希望本文能帮助开发者更好地理解和应用 `keytool` 这...

    基于java的keytool GUI 图形工具

    4. **查看Keystore信息**:显示Keystore中的所有条目,包括证书的详细信息。 5. **更改Keystore密码**:保护Keystore的安全,可以通过Keytool修改其访问密码。 基于Java的Keytool GUI工具通常会提供这些功能的图形...

    KeyTool.GUI.1.6 证书密钥查看生成工具

    - **可视化显示**:可以清晰地查看证书的详细信息,包括颁发者、有效期、序列号等。 - **批量操作**:支持一次性处理多个证书或密钥,提高了工作效率。 5. **如何使用KeyTool.GUI.1.6** - **安装**:下载KeyTool...

    KeyTool1.6

    在"使用KeytoolGUI生成Keystore.doc"文档中,可能详细介绍了如何使用该工具。 ### 六、PFX/PKCS12格式 除了JKS格式,KeyTool也支持PFX(Personal Information Exchange)或PKCS#12格式,这是一种同时包含公钥、...

Global site tag (gtag.js) - Google Analytics