实验三数字证书的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三数字证书系统的设计与实现

一、实习目的

1、理解数字证书的概念和作用

2、理解公钥基础设施(PKI)的原理

3、掌握数字证书的实现

二、实习内容

基于java平台实现一个数字证书系统,阶梯任务如下:

(1)用keytool、keystored等工具,分别用默认密钥库和算法,别名、指定算法和秘钥有效期以及非交互模式等方式创建数字证书;

(2)数字证书的显示:用keytool显示证书条目、详细信息、导入文件以及从文件中显示,在windows中直接从文件显示证书,java程序从文件中读取证书;

(3)实现M密文状态下的签名与模拟分发;

(4)采用SSL,建立安全通信过程,实现Socket通信的签名分发;

(5)将方案移植到某个web应用中,实现使用的签名分发。

三、测试数据和预期结果

(1)创建数字证书,别名alias为faltest,指定算法keyalg为RSA,长度keysize为1024,默认密钥库keystore为mykeystore,有效期validity为2000天,在命令行中输入“keytool -genkey -alias faltest -keyalg RSA -keysize 1024 -keystore mykeystore -validity 2000”,执行命令结果为:

(2)用keytool显示证书条目、详细信息,在命令行中输入“keytool -list -v -keystore mykeystore”语句,执行结果为:

keytool的命令行参数-list可以显示密钥库中的证书信息,进一步使用-keystore参数可

以显示指定的密钥库中的证书信息,在命令上加上-v参数可以显示证书的详细信息。(3)导入文件及从文件中显示使用keytool的-export可以将别名指定的证书导出到文件,文件名通过-file参数指定,在命令行中输入“keytool -export -alias faltest -file faltest.cer -keystore mykeystore –rfc”语句,执行结果为:

(4)在windows中直接从文件中显示证书,双击faltest.cer的图标,按照安装导航安装证书,重新双击faltest.cer的图标:

(6)java程序从文件中读取证书

代码如下:

package Cert;

import java.io.*;

import java.security.cert.*;

public class PrintCert {

/**

* @param args

*/

public static void main(String[] args)throws Exception {

// TODO Auto-generated method stub

CertificateFactory cf = CertificateFactory.getInstance("X.509");

//获取CertificateFactory类型对象,CertificateFactory类是一个工厂类,必须通过getInstance()生成对象,其参数指定证书类型

FileInputStream in = new FileInputStream("faltest.cer");//获取证书文件传输流

Certificate c = cf.generateCertificate(in);

in.close();

String s = c.toString();//显示证书

FileOutputStream fout = new FileOutputStream("tmp.txt");

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(fout));

out.write(s,0,s.length());

out.close();

}

}

运行代码后:

四、源代码

以附件形式上传

五、小结

通过本次实习,了解了PKI原理,掌握了数字证书的实现过程,对keytool、keystored 等工具的各项操作命令有了进一步的理解,本次实习相对简单,实习中的问题都可以通过查

找资料解决。

相关文档
最新文档