- 浏览: 705798 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (272)
- Struts1.x (7)
- 事务 (2)
- Hibernate (11)
- 数据库 (14)
- JavaScript&Ajax (43)
- JSP&Servlet (2)
- Flex (1)
- 其它 (9)
- Java (22)
- 框架集成 (1)
- WebService (3)
- Tomcat (3)
- 加密和安全登录 (13)
- 基于原型的JavaScript (0)
- JavaDoc和Java编码规范 (3)
- CAS (1)
- 加密 (1)
- Axis2 (10)
- Ext2.x (3)
- SSH整合 (2)
- Ext (0)
- 正则表达式 (1)
- 设计模式 (4)
- 对象序列化技术 (3)
- CVS (2)
- Struts2 (6)
- Spring 2.x (7)
- Spring Security (2)
- Java 课程 (20)
- 程序员之死 (1)
- 软件测试 (6)
- UML (5)
- NetBeans (1)
- cxf (1)
- JMS (13)
- 设计 (5)
- ibatis2.x (3)
- Oracle (1)
- WebSphere (7)
- 概要设计 (1)
- DB2 (10)
- PowerDesigner (0)
- 软件工程 (5)
- rose (1)
- EA (1)
- LDAP (7)
- Portal&Portlet (3)
- MQ (10)
- ESB (4)
- EJB (2)
- JBoss (2)
最新评论
-
typeRos:
只有配置文件,没有代码么大神
Spring实现IBMMQ的JMS消息发布/订阅模式 -
panamera:
如果ActiveMQ服务器没有启动,这个时候消息生产者使用Jm ...
Spring JMSTemplate 与 JMS 原生API比较 -
lian819:
顶1楼, 引用文件, 配置属性, 太方便了
EXTJS 同步和异步请求 -
wilhard:
说得清楚明白
<%@ include file=""%>与<jsp:include page=""/>区别 -
刘琛颖:
总结的很好。受益了
javascript 父窗口(父页面)— 子窗口 (子页面)互相调用的方法
★ 实例说明
本实例使用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显示出的信息一致。
由于该证书是用自己的私钥对该证书进行数字签名的,即自己给自己签发的证书,因此窗口中显示警告信息:“该证书发行机构根证书没受信任”。
发表评论
-
Java中使用默认的密钥库和算法创建数字证书
2011-11-21 14:57 3027转载的第一篇文档: ★ 实例说明 本实例使用J2SDK提 ... -
keytool
2009-02-17 07:04 0keytool keytool用来管理私钥仓库(k ... -
使用 Apache HttpClient 突破 J2EE 站点认证
2009-02-14 17:11 1629原文地址:http://te ... -
MD5摘要计算
2009-01-23 15:09 1589在JSP 程 序中,用MD5算法的常用之处就是对用户登录密 ... -
Java安全通信、数字证书及应用实践
2009-01-23 14:55 0Java安全通信、数字证书及应用实践 摘要 : ... -
CA证书
2009-01-23 11:07 1605CA是证书的签发机构,它是PKI的核心。CA是负责签发证书 ... -
JDK工具KEYTOOL常用命令
2009-01-22 11:50 1419JDK工具KEYTOOL常用命令 ... -
tomcat实现SSL配置(转)
2009-01-18 21:28 1371tomcat实现SSL配置(转) 原文地址:http:// ... -
什么是 SSL 证书?如何检查网址是否部署了 SSL 证书?
2009-01-18 16:47 2214原文地址:http://www.wosig ... -
X.500 Distinguished Names
2009-01-18 15:43 1184X.500 Distinguished Names被用来标识一 ... -
X.509 证书
2009-01-18 14:45 1476X.509 Certificates ... -
什么是数字证书
2009-01-15 10:07 1333由于Internet网电 ... -
什么是根证书?为什么用户必须下载根证书?
2009-01-15 09:57 7106原文地址:http://hi.baidu.com/sunshi ... -
SSL原理解密
2009-01-14 17:14 2009SSL原理解密 原地址连接 ...
相关推荐
其中密钥库列表用于显示默认密钥库中的所有条目;证书库列表用于显示默认证书库中的所有数字证书;证书管理维护界面分为左右两部分,左半部分可以显示条目或者数字证书的详细信息,右半部分可以用于新建条目或者数字...
数字证书管理工具V2.0-使用java图形化编写,安装版直接安装使用(由于上传大小的限制,本版本为不带jre版,使用前请确保环境中已经安装过jdk) 数字证书管理工具V2.0: 包括三个视图,分别是:密钥库列表、证书库列表...
默认的密钥库类型是JKS(Java Key Store)。 - **生成密钥对**:在密钥库中,Keytool能生成新的密钥对,并将其与自签名的证书关联起来。 - **导入和导出证书**:Keytool允许导入已有的证书到密钥库,或者将密钥库...
java.security.interfaces 提供的接口用于生成 RSA Laboratory Technical Note PKCS#1 中定义的 RSA(Rivest、Shamir 和 Adleman AsymmetricCipher 算法)密钥,以及 NIST 的 FIPS-186 中定义的 DSA(数字签名算法)...
数字证书管理工具V1.0-使用java图形化编写,安装版直接安装使用(由于上传大小的限制,本版本为不带jre版,使用前请确保环境中已经安装过jdk) 数字证书管理工具V1.0: 包括三个视图,分别是:密钥库列表、证书库...
这个压缩包“java源码:Java生成密钥的实例.zip”显然包含了有关如何在Java中创建和管理密钥的示例代码。这里我们将深入探讨Java中生成密钥的相关知识点。 1. **Java Cryptography Architecture (JCA)** Java ...
`keytool`是Java开发工具包(Java Development Kit, JDK)中的一个重要命令行工具,用于管理数字证书、密钥对和信任存储库。在本文中,我们将深入探讨`keytool1.6`版本及其在生成签名文件过程中的应用。 ### 1. `...
**Keytool** 是 Java 开发工具包(JDK)中的一个实用程序,用于管理密钥库(key stores),其中包括私钥(private keys)及其对应的公钥证书(public key certificates)。密钥库是一个存储密钥和证书的地方,可以用来管理和...
它主要用于创建、导入、管理和删除密钥对与数字证书。本文将详细介绍 `keytool` 支持的不同类型的密钥库 (KeyStore) 以及如何将证书导入 JKS(Java KeyStore)文件中。 #### Java KeyStore 的类型 Java 提供了几种...
`java.security.Signature` 类提供创建和验证数字签名的功能。 6. **密钥管理**: 在实际应用中,密钥管理是非常关键的一部分。Java的`java.security.KeyStore` 类用于存储和管理密钥、证书等安全信息。通过`...
java.security.interfaces 提供的接口用于生成 RSA Laboratory Technical Note PKCS#1 中定义的 RSA(Rivest、Shamir 和 Adleman AsymmetricCipher 算法)密钥,以及 NIST 的 FIPS-186 中定义的 DSA(数字签名算法)...
在Java开发中,创建和管理数字证书是常见的需求,例如为本地服务器生成自签名证书,或者处理远程服务器的证书链。`keytool` 提供了以下主要功能: 1. **生成密钥对**:使用 `keytool -genkeypair` 命令可以生成公钥...
在 Java Security 中,Message Digest 接口定义了如何创建和使用不同的摘要算法(如 MD5、SHA-1、SHA-256 等)。 - **Digital Signature (数字签名)**:数字签名是一种安全机制,用于确认发送者的身份并确保数据在...
Portecle是一款强大的Java密钥库(KeyStore)管理和证书操作工具,主要应用于安全领域,尤其是涉及SSL/TLS加密通信、数字签名等场景。在Java应用程序中,密钥库是存储公钥、私钥和证书的安全容器。Portecle1.9版本...
在实际应用中,你可能还需要处理其他细节,如证书的生成和交换、密钥的存储和加载等。`gmssl`库提供的功能可能并不完全覆盖bouncycastle的所有特性,因此在某些高级用例中,可能需要对代码进行额外的适配。 总之,...
java.security.interfaces 提供的接口用于生成 RSA Laboratory Technical Note PKCS#1 中定义的 RSA(Rivest、Shamir 和 Adleman AsymmetricCipher 算法)密钥,以及 NIST 的 FIPS-186 中定义的 DSA(数字签名算法)...
java.security.interfaces 提供的接口用于生成 RSA Laboratory Technical Note PKCS#1 中定义的 RSA(Rivest、Shamir 和 Adleman AsymmetricCipher 算法)密钥,以及 NIST 的 FIPS-186 中定义的 DSA(数字签名算法)...
java.security.interfaces 提供的接口用于生成 RSA Laboratory Technical Note PKCS#1 中定义的 RSA(Rivest、Shamir 和 Adleman AsymmetricCipher 算法)密钥,以及 NIST 的 FIPS-186 中定义的 DSA(数字签名算法)...
1. **JKS (Java KeyStore)**:这是Java平台默认的密钥库格式,用于存储私钥、公钥和证书。JKS文件通常用于存放服务器证书、CA证书等,是Java应用服务器配置HTTPS服务时常用的证书格式。 2. **PKCS#12 (PFX/P12)**:...