★ 实例说明
本实例使用J2SDK提供的keytool工具用默认的密钥库和算法创建几个数字证书。
★运行程序
keytool程序运行时加上命令行参数–genkey即可。
在命令行中输入“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的公钥和私钥,并以交互方式获得公钥持有者的信息。其交互过程如下:
输入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文件。
输入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参数指定。如输入如下命令:
输入keystore密码: 123456
保存在文件中的认证
则将默认密钥库中的liaoweimin2条目对应的证书导出到文件liaoweimin2.cer中。由于命令行中没有用storepass给出密码,因此屏幕提示输入keystore密码。由于证书中不包含私钥,因此不需要条目的主密码。
该操作完成后将在当前目录中创建liaoweimin2.cer文件,该文件即是默认密钥库中的liaoweimin2条目对应的证书,它包含了公钥和主体的对应关系,内容也可以公开。
输入如下命令则可以指定密钥库:
保存在文件中的认证
该操作完成后将在当前目录中创建lf.cer文件。
如果用文本编辑器打开liaoweimin2.cer或lf.cer,将会发现它是二进制文件,有些内容无法显示,这不利于公布证书。在导出证书时加上-rfc参数则可以使用一种可打印的编码格式来保存证书。如:
保存在文件中的认证
则当前目录下将增加一个文件mytest.cer,其内容是编码过的,可以在屏幕上显示、拷贝或打印。如图5-2所示。(打印内容不同)
1.2.2 使用Keytool从文件中显示证书
★ 实例说明
本实例使用J2SDK提供的keytool工具将1.2.3小节导出的证书文件显示出来。
★运行程序
使用keytool的printcert参数可以将1.2.3小节导出到证书文件详细内容显示出来,文件名称通过file参数指定。如:
(见自己的屏幕)
对编码过的证书可以同样显示,如:
(见自己的屏幕)
1.2.3 在Windows中从文件显示证书
★ 实例说明
本实例在Windows中直接显示1.2.1小节导出的证书文件。
★运行程序
1.2.3小节导出的证书文件中,只要文件名以.cer为后缀,Windows操作系统就可以直接识别。如在Windows中双击lf.cer图标,将出现窗口。其中包含了证书的所有者、颁发者、有效期等信息,这些信息和使用keytool显示出的信息一致。
由于该证书是用自己的私钥对该证书进行数字签名的,即自己给自己签发的证书,因此窗口中显示警告信息:“该证书发行机构根证书没受信任”。
转 http://blog.csdn.net/xueyepiaoling/article/details/6524200
相关推荐
**描述**: Keytool是Java开发的一个强大工具,用于管理密钥对(公钥和私钥)以及数字证书。它可以帮助用户创建、存储、导出、导入和管理这些安全组件,这对于进行安全的网络通信和身份验证至关重要。 **知识点详解*...
5. **生成证书请求 (CSR)**:首先,使用KeyTool创建一个新的密钥对,然后生成证书请求。CSR包含公钥和组织信息,将发送给CA以获取签名证书。 6. **申请证书**:将CSR提交给受信任的CA,如Verisign、GlobalSign等,...
【KeyTool证书生成】知识点详解 KeyTool是Java开发工具包(JDK)中自带的一个命令行工具,主要用于管理和创建密钥对(公钥和私钥)以及数字证书。在HTTPS通信中,数字证书用于验证服务器的身份,确保数据传输的安全性...
PKCS#12 是公钥加密标准,规定了可包含所有私钥、公钥和证书的文件。它以二进制格式存储,也称为 PFX 文件,在 Windows 中可以直接导入到密钥区。 BKS 来自 BouncyCastle Provider,使用 TripleDES 来保护密钥库中...
**Nginx所需证书格式**包括两部分:.crt文件(公钥证书文件)和.key文件(私钥文件)。这两种格式的证书文件通常用于配置Nginx以支持HTTPS服务。 #### 三、转换步骤详解 下面将详细介绍如何通过一系列命令行工具,将JKS...
本文主要聚焦于Java平台中的密钥和证书管理工具——`keytool`,这是一个强大的命令行实用程序,用于创建、管理和维护密钥仓库,其中包含了私钥、公钥证书链以及可信任实体的证书。 **keytool的用途** keytool的...
成功执行后,会在指定位置生成证书文件`certfile.cer`。 ##### 3. 导入公钥至公钥库 最后,需要将上述生成的证书文件导入到公钥库中。操作步骤如下: - **命令行**:`keytool -import -alias publiccert -file ...
### Java Keytool 使用详解 #### 一、Keytool 概述 `keytool` 是 Java 提供的一个强大的命令行工具,用于管理和维护 Java 应用程序的安全性,特别是密钥和证书方面。它允许用户创建、导入、导出、查看和删除密钥库...
- **keytool**:Java自带的工具,用于管理和保护用户的公钥/私钥对及证书,存储于密钥仓库(keystore)中,如JKS和JCEKS。 - **JKS**:Sun提供的密钥库类型,适用于基本需求。 - **JCEKS**:使用SunJCE Provider...
1. 生成密钥对:使用keytool生成包含公钥和私钥的Keystore文件。 2. 申请数字证书:使用keytool生成CSR(Certificate Signing Request),并提交给证书颁发机构(CA)。 3. 颁发数字证书:CA验证请求后,签发证书并...
### OpenSSL证书制作过程详解 #### 一、数字证书使用的场合 数字证书主要应用于以下几个场景: - **加密传输**:在互联网通信中确保数据传输的安全性,防止数据被窃听或篡改。 - **身份验证**:确认通信双方的...
`keytool`是JDK自带的一个强大的证书管理工具,支持创建密钥库、生成证书请求、管理密钥和证书等操作。 ##### 3.1 证书生成 使用以下命令可以生成一个包含私钥和自签名证书的密钥库文件: ```sh keytool -genkey ...
使用keytool可以方便地生成密钥对,管理证书以及导入导出证书等。 2. 非对称加密与对称加密: 非对称加密使用一对密钥,一个为私钥,一个为公钥。公钥可用于加密数据,而私钥用于解密数据。与之相对的对称加密只...
它可以包含多种类型的密钥和证书,如私钥、公钥、数字证书等。Keystore文件通常存储在本地文件系统中,其安全性由一个密码保护,防止未经授权的访问。 3. Alias Alias(别名)是keystore中的唯一标识符,用于区分...
`keytool`是Java开发工具包(JDK)自带的一个重要的命令行工具,主要用于管理和维护密钥对(公钥和私钥)以及相关的数字证书。这些密钥和证书在网络安全中起到至关重要的作用,比如SSL/TLS加密、数字签名、身份验证...
1. **使用Keytool生成密钥库**:通过`Keytool`生成一个新的密钥库文件,其中包含私钥和公钥。 2. **使用Jarsigner进行签名**:使用生成的密钥库文件对APK文件进行签名。 3. **使用ZipAlign优化APK**:使用`ZipAlign`...
使用`keytool`命令来创建一个密钥库文件,该文件用于存储私钥和公钥证书。示例命令如下: ```shell keytool -genkey -keystore pepper.store -alias pepper ``` 这里创建了一个名为`pepper.store`的密钥库文件,并...