实验三数字证书的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 等工具的各项操作命令有了进一步的理解,本次实习相对简单,实习中的问题都可以通过查
找资料解决。