设为首页 加入收藏

TOP

Java中使用密钥库和算法创建数字证书
2014-10-30 17:15:07 】 浏览:315
Tags:Java 使用 密钥 算法 创建 数字证书

  ★ 实例说明


  本实例使用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


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java程序实现压缩某目录 下一篇JAVA调用ICE接口实践

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目