动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息



本月文章推荐
.J2ME 3D技术简介.
.好处不止一点点 编程结构--闭包.
.谈谈Java:Checked Exception与R.
.Java 是传值还是传引用.
.实现Hibernate分页查询原理解读.
.索爱部分机型支持同时播放多个声.
.Java数据流——企业级数据流分析.
.通过开发一个STRUTS项目的体会.
.实 现JAVA 的 动 态 类 载 入 机.
.JRuby:集Java与RoR之所长.
.微软.Net VS Java两军对垒 Web服.
.J2EE应用系统内部的Web Services.
.完全掌握Java中的“包”机制.
.取余运算符 (%).
.(方志文)MutableGridLayout布局管.
.java设计模式---prototype(原型).
.带你步入J2EE殿堂:最易懂的J2EE.
.SWT/JFace开发入门指南之搭建开发.
.JAVA中配置环境变量设置方法大全.
.办公新选择——Sun StarSuite 6..

为测试Java应用程序生成证书链

发表日期:2008-1-5 |



  学习如何创建数字证书链以测试您的软件。IBM 软件工程师 Paul H. Abbott 通过展示如何使用可免费获得的 OpenSSL 工具箱创建任意长度的证书链,阐明了这个很少有文档说明的过程。他还描述了常见的证书属性,并展示了一些将证书读取到 Java keystore 中的示例 Java 代码。
  
  假如正在开发用于公钥基础设施 (PKI) 实现安全性的 Java 软件,那么通常需要创建 数字证书链 (也称为 证书路径) 以进行测试。这是比较简单的任务,但是关于它的文档说明非常少。本文描述了如何用开源 OpenSSL 工具箱 (请参阅 参考资料)创建任意长度的证书链。还介绍了一些常见的证书属性并分析了一个读取证书到 Java keystore 中的示例应用程序。
  
  数字证书:快速回顾
  本文假定您熟悉 PKI 基础知识,因此我只对数字证书的目的和结构给予简要回顾以帮助说明证书链的概念。
  
  数字证书的主要用途是验证签名数据的来源,如电子邮件和 JAR 文件。用证书验证签名的数据使接收者知道数据的来源以及它在传输过程中是否改变过。
  
  在高层,一个数字证书包含一个 惟一名 (DN) 和一个 公钥。DN 标识一个具有与证书的公钥匹配的 私钥 的实体――如一个人。通过用私钥对证书签名并将签名放到证书中而将两者结合到一起。
  
  一个由匹配证书公钥的私钥签名的证书称为 自签名 证书。根证书颁发机构 (Root certification authority,CA) 证书就属于这一类。用户证书通常是由不同的私钥签名的,如 CA 的私钥。这构成了两证书链。验证用户证书为真涉及验证其证书中的签名,这需要 CA 的公钥。但在在可以使用 CA 的公钥之前,需要对封装的 CA 证书进行验证。因为 CA 证书是自签名的,所以用 CA 公钥验证证书。
  
  用户证书需要用根 CA 的私钥签名。它可以用一个中介的私钥签名,这个私钥的证书是用 CA 的私钥签名的。这是一个三证书链的例子:用户证书、中介证书和 CA 证书。但是在链中可以有多个中介,因此证书链可以有任意的长度。
  
  值得一提的另一点是证书可以包含额外信息,称为 extension。Extension 可以指定证书的用途以及其他内容。根据于证书的用途,某些 extension 有可能非常重要。
  
  用 OpenSSL 创建证书
  有一些创建证书的工具。可以使用在 Java SDK 中自带的一个命令行工具 keytool 创建自签名的证书。但是证书链需要更复杂的软件,如 OpenSSL。
  
  获得 OpenSSL
  可以免费下载 OpenSSL (请参阅 参考资料)。假如使用 UNIX,那么很可能在操作系统中已经安装了 OpenSSL,或者它是操作系统的安装选项。Linux 用户应当查看: /usr/share/ssl。Microsoft MKS toolkit 也带有某个版本的 OpenSSL。 (在我的计算机中它是在 C:\Program Files\MKS Toolkit\etc\openssl。) 假如使用 Windows 但是没有 MKS,那么可以从 SourceForge 得到必要的二进制文件 (请参阅 参考资料)。大多数安装由三个主要文件组成:OpenSSL 二进制文件、一个 CA.sh shell 脚本和一个 openssl.cnf 配置文件。(SourceForge 的软件包缺少 CA.sh 文件。可以下载源代码包获得缺少的文件。)
  
  安装后,保证 CA.sh 和 OpenSSL 可执行文件在路径中。然后就可以开始创建根证书了。
  
  创建根证书
  CA shell 脚本使创建根证书成为一项相对轻易的工作。首先,进入要存放 CA 数据的目录。 (我使用 temp\OpenSSL 目录。) 然后键入:
  
  CA -newca
  
  这会产生一个像清单 1 的对话框,它包括我在提示符下输入的示例信息:
  
  清单 1. 创建根证书
  
  $ CA.sh -newca
  CA certificate filename (or enter to create)
  
  Making CA certificate ...
  Using configuration from C:/PROGRA~1/MKSTOO~1/etc/openssl/openssl.cnf
  Loading 'screen' into random state - done
  Generating a 1024 bit RSA private key
  ......++++++
  ...++++++
  writing new private key to './demoCA/private/./cakey.pem'
  Enter PEM pass phrase:
  Verifying passWord - Enter PEM pass phrase:
  -----
  You are about to be asked to enter information that will be incorporated into your certificate request.
  What you are about to enter is what is called a Distinguished Name or a DN.
  You will see a number of fields, but you can leave some blank.
  For some fields there will be a default value,
  If you enter '.', the field will be left blank.
  -----
  Country Name (2 letter code) [AU]:UK
  State or Province Name (full name) [Some-State]:Hampshire
  Locality Name (e.g., city) []:Winchester
  Organization Name (e.g., company) [Internet Widgits Pty Ltd]:IBM UK Ltd
  Organizational Unit Name (e.g., section) []:JTC
  Common Name (e.g., YOUR name) []:Pauls Root Certificate
  Email Address []:Paul_Abbott@uk.ibm.com
  $
  
  完成对话框后,OpenSSL 创建以下目录结构:
  
  demoCA/
    cacert.pem       - root certificate
    index.txt        - empty
    serial         - text file containing "01"
    certs/         - empty
    crl/          - empty
    newcerts/        - empty
    private/cakey.pem    - private key
  
  下面是在主目录中文件的简单说明:
  
  cacert.pem 是这个 CA 的 PEM 编码的(请参阅侧栏 PEM 文件格式)根证书。根证书验证由根私钥签名的证书。
  
  index.txt 是包含所有发布的证书列表的文件。
  
  serial 包含将指定给由这个 CA 发布的证书的下一个可用序列号。换一种说法,它是在这个根证书对签名请求签名时指定给一个证书的惟一序列号。
  
  cakey.pem 是根私钥。这个密钥用于签名证书请求。它也是 PEM 编码的。
  
  您定义目录名 (在这个例子中是 demoCA) 和根证书的有效周期,在 CA.sh 中它默认为 365 天。假如想要改变这些值,必须编辑这个文件。
  
  生成用户证书
  生成用户证书有两步:生成一个请求和对请求签名。CA shell 脚本可以用 -newreq (生成一个新的请求) 和 -sign (签名一个新请求) 操作符完成这两步。
  
  生成一个新请求
  执行 CA -newreq 命令会启动一个类似于生成新根证书时看到的对话框。一个主要的不同是这个对话框提示您输入 PEM 密码短语,OpenSSL 将使用这个短语编码私钥,然后将它写入输出文件。
  
  输出文件名为 newreq.pem,包含私钥和签名请求,可以将它想像为未签名的证书。清单 2 显示了一个新请求对话框的例子。
  
  清单 2. 示例 -newreq 对话框
  
  Using configuration from
  C:/PROGRA~1/MKSTOO~1/etc/openssl/openssl.cnf
  Loading 'screen' into random state - done
  Generating a 1024 bit RSA private key
  ......................++++++
  ...++++++
  writing new private key to 'newreq.pem'
  Enter PEM pass phrase:
  Verifying password - Enter PEM pass phrase:
  -----
  You are about to be asked to enter information that will be incorporated into your certificate request.
  What you are about to enter is what is called a Distinguished Name or a DN.
  You will see a number of fields, but you can leave some blank.
  For some fields there will be a default value.
  If you enter '.', the field will be left blank.
  -----
  Country Name (2 letter code) [AU]:UK
  State or Province Name (full name) [Some-State]:Hampshire
  Locality Name (e.g., city) []:Winchester
  Organization Name (e.g., company) [Internet Widgits Pty Ltd]:IBM Uk Ltd
  Organizational Unit Name (e.g., section) []:JET
  Common Name (e.g., YOUR name) []:Paul Abbott
  Email Address []:Paul_H_Abbott@uk.ibm.com
  
  Please enter the following 'extra' attributes
  to be sent with your certificate request
  A challenge password []:qwerty
  An optional company name []:
  Request (and private key) is in newreq.pem
  
  对请求签名
  执行 CA -sign 命令会用包含在 private/cakey.pem 中的根 CA 的私钥签名请求。请求需要在一个名为 newreq.pem 的文件中,生成的证书写入到名为 newcert.pem 的文件中,这两个文件都在当前目录中。清单 3 显示了示例请求-签名对话框。
  
  清单 3. 示例 -sign 对话框
  
  $ CA.sh -sign
  Using configuration from C:/PROGRA~1/MKSTOO~1/etc/openssl/openssl.cnf
  Loading 'screen' into random state - done
  Enter PEM pass phrase:
  Check that the request matches the signature
  Signature ok
  The Subjects Distinguished Name is as follows
  countryName      :PRINTABLE:'UK'
  stateOrProvinceName  :PRINTABLE:'Hampshire'
  localityName     :PRINTAB
上一篇:JAVA中的日期时间操作 人气:471
下一篇:使用JakartaCommons之库组件攻略 人气:452
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-24 Sablog-X v2.0 预览版
2008-7-24 帝国备份王EmpireBak 2008 正式版
2008-7-24 网趣网上购物系统时尚版 v8.2
2008-7-24 纵横B2B电子商务系统XYECS!B2B v
2008-7-24 e路小说小偷 v1.2.0723
2008-7-24 凌风美女图片站程序 v2.2
2008-7-24 TOM15电影收索程序
2008-7-24 清风信息自动采集生成系统 v1.0
2008-7-24 QQ邮箱编辑器 v1.0 (小小菜刀ASP
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵