知识大全 为测试 Java 应用程序生成证书链

Posted 文件

篇首语:不要什么话都跟别人讲,你说的是心里话,他们听的是笑话。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 为测试 Java 应用程序生成证书链相关的知识,希望对你有一定的参考价值。

为测试 Java 应用程序生成证书链  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  学习如何创建数字证书链以测试您的软件 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 那么可以从 SourceFe 得到必要的二进制文件 (请参阅 参考资料) 大多数安装由三个主要文件组成 OpenSSL 二进制文件 一个 CA sh shell 脚本和一个 f 配置文件 (SourceFe 的软件包缺少 CA sh 文件 可以下载源代码包获得缺少的文件 )    安装后 保证 CA sh 和 OpenSSL 可执行文件在路径中 然后就可以开始创建根证书了      创建根证书  CA shell 脚本使创建根证书成为一项相对容易的工作 首先 进入要存放 CA 数据的目录 (我使用 temp\\OpenSSL 目录 ) 然后键入     CA newca    这会产生一个像清单 的对话框 它包括我在提示符下输入的示例信息     清单 创建根证书    $ CA sh newca  CA certificate filename (or enter to create)    Making CA certificate   Using configuration from C:/PROGRA~ /MKSTOO~ /etc/openssl/f  Loading screen into random state done  Generating a 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 ( letter code) [AU]:UK  State or Province Name (full name) [Some State]:Hampshire  Locality Name (e g city) []:Winchester  Organization Name (e g pany) [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 []:Pa  $    完成对话框后 OpenSSL 创建以下目录结构     demoCA/    cacert pem        root certificate    index txt        empty    serial          text file containing     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 中它默认为 天 如果想要改变这些值 必须编辑这个文件      生成用户证书  生成用户证书有两步 生成一个请求和对请求签名 CA shell 脚本可以用 newreq (生成一个新的请求) 和 sign (签名一个新请求) 操作符完成这两步      生成一个新请求  执行 CA newreq 命令会启动一个类似于生成新根证书时看到的对话框 一个主要的不同是这个对话框提示您输入 PEM 密码短语 OpenSSL 将使用这个短语编码私钥 然后将它写入输出文件     输出文件名为 newreq pem 包含私钥和签名请求 可以将它想像为未签名的证书 清单 显示了一个新请求对话框的例子     清单 示例 newreq 对话框    Using configuration from   C:/PROGRA~ /MKSTOO~ /etc/openssl/f  Loading screen into random state done  Generating a 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 ( letter code) [AU]:UK  State or Province Name (full name) [Some State]:Hampshire  Locality Name (e g city) []:Winchester  Organization Name (e g pany) [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    Please enter the following extra attributes  to be sent with your certificate request  A challenge password []:qwerty  An optional pany name []:  Request (and private key) is in newreq pem     对请求签名  执行 CA sign 命令会用包含在 private/cakey pem 中的根 CA 的私钥签名请求 请求需要在一个名为 newreq pem 的文件中 生成的证书写入到名为 newcert pem 的文件中 这两个文件都在当前目录中 清单 显示了示例请求 签名对话框     清单 示例 sign 对话框     $ CA sh sign  Using configuration from C:/PROGRA~ /MKSTOO~ /etc/openssl/f  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 cha138/Article/program/Java/Javascript/201311/25426

相关参考

知识大全 Java中国象棋博弈程序探秘之生成有效着法

Java中国象棋博弈程序探秘之生成有效着法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  着法生

知识大全 Java实现双向链表

Java实现双向链表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  自定异常类  Java代码 

知识大全 JAVA中责任链模式

JAVA中责任链模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使很多对象都有处理请求的机会

知识大全 java性能优化-之一

  .对象的生成和大小的调整  JAVA程序设计中一个普遍的问题就是没有好好的利用JAVA语言本身提供的函数从而常常会生成大量的对象(或实例)由于系统不仅要花时间生成对象以后可能还需花时间对这些对象进

知识大全 Java处理PFX格式证书

Java处理PFX格式证书  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在Security编程

知识大全 JAVA语言中链表和双向链表的实现

JAVA语言中链表和双向链表的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  链表是一种重要

知识大全 考计算机方面的什么证书最容易找到工作

考计算机方面的什么证书最容易找到工作首先说,全国计算机等级考试是适用于非计算机专业人员的一种测试计算机应用能力的证书性考试,在各个级别中凡是笔试和机试等级在及格及其以上的均为合格颁发合格证书。下面我关

知识大全 使用JAVA数字证书做数字签名认证

使用JAVA数字证书做数字签名认证  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!    keyto

知识大全 头文件生成器-javah.exe

  javah头文件生成器  javah程序创建C头文件和存根文件这些是把本地C成员函数包入java所需要的被创建的头文件给出了有关java类的信息这些信息是C成员函数与java类交换数据所必需的存根

知识大全 Java中使用密钥库和算法创建数字证书

Java中使用密钥库和算法创建数字证书  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  实例说明