一、设计方案及可行性分析
1. 设计方案
- 基于B/S架构实现基于BouncyCastle的数字证书格式转换,涉及证书包括:pem证书、der证书、pfx证书、p7b证书链。
2. 可行性分析
- BouncyCastle是一种用于 Java 平台的开放源码的轻量级密码术包,支持大量的密码术算法,能够提供数字证书转换所需要的类和方法。
二、详细设计思路
1. 系统体系结构,技术选择
- 本项目使用的是java语言,实现基于BouncyCastle的证书格式转换工具设计与实现。
2. 说明程序中用到的关键数据类型的定义,绘制关键程序的流程图,以及各子模块间的调用关系图
前端部分
- 检查是否提供符合要求的证书文件
- 进行输入测试,判断文件输入类型与证书源格式是否一致;
- 输入PFX证书所需要的私钥及加密密钥;
- 介绍几种证书文件的相关信息;
- 提供小组成员的博客链接
后台部分
- 通过XML文件连接前端和后台;
- 将前端的源格式和目标格式及证书文件、密钥等信息传到后台;
- 判断源格式,将加载的证书文件读入字节数组;
- 将证书文件转换为X509证书文件格式;
- 判断目标格式,将X509证书文件转为所需格式;
- 将转换后的证书文件输出到指定位置;
- 转换成功跳转到成功界面;
3. 面向对象技术可以用UML建模
4.列出测试目的、测试内容、测试结果,并对结果进行分析
测试目的
- 在已经确定好的条件下,对该系统进行测试,通过测试发现该系统中程序的错误或者漏洞,使该证书转换系统更完整、全面。
前端测试
- 界面
- 源格式与证书文件格式不符——若源格式与证书文件类型不同,则会报“证书源不匹配”的错误
- 未加载证书文件——若未提供证书文件,则会报“请选择证书”的错误。
- 正确输出证书文件——提供证书文件、源格式与证书文件格式相同则可以进行证书转换。
后台代码测试
- JudgeCert部分非法输入退出测试
- Read部分非法路径异常抛出测试
- Write部分非法路径异常抛出测试
三、设计特色
1. 整体设计——基于BouncyCastle进行证书转换
- BouncyCastle抽象包装了各种ASN1数据类型以及ASN1结构相关的解析和组装,使用BC包可以很方便的组装生成证书,因此我们的设计使用BC包实现各种格式证书的转换。
2.编程设计——读取写入证书,BC包的灵活运用
- 我们使用BC提供的类,如PemReader、PemWriter等,将编程主要分为了三大部分:
- 读取证书:从各种格式的证书读取文件,将其转化为X509Certificate对象
- 写入证书:将X509Certificate对象转化为各种格式的证书
- 整体拼接:写出主类,将各个部分拼接,并测试边界情况
3.前端设计——界面优化
- 用户可以在网页直接选择要转换的源证书格式和目的证书格式
- 用户可以在网页直接选择要转换的证书
- 界面美观友好
四、源代码及注释
五、个人完成情况
1. 小组贡献排序及依据(每个人的工作量):
- ①20175217 吴一凡:组织协调组内工作、证书转换代码编写、组内报告编写汇总、前端代码优化
- ①20175205 侯颖:证书转换代码优化、前端代码编写、组内报告编写
- ②20175234 赵诗玥:证书转换代码优化、单元测试、组内报告编写