1、最简单的证书包含一个公开密钥、用户信息及证书授权中心的信息以及数字签名,数字证书还有一个重要的特征就是只在有效期的时间段内有效。在日常生活中,人们可以通过互相交换证书借助 CA 认证机构来进行身份识别,特别是在在线购物,如淘宝、京东等,数字证书对于交易的安全进行起到极其重要的作用。本次课程设计中,首先是利用 keysotre 生成密钥库以及颁发者自己的证书,这个就充当 CA 颁发机构,然后判断申请用户是否合法,认证通过后,根据提交的公钥,以及个人信息给用户颁发数字证书。【关键字】CA用户证书数字签名目录1. 前言12. 系统分析22.1 系统需求22.2 数据库连接32.3 功能需求42.4
2、开发环境63. 详细设计73.1 系统设计框架73.2 界面设计83.3 主要代码113.4 测试和运行结果144. 所遇到的问题及分析解决165. 系统特色及关键技术186. 结论及体会20参考文献211. 前言随着科技的不断进步,人们生活水平的不断提高,电子商务越来越受到当今人们的 青睐,如网上签约、网上购物、网上缴费等。这是因为人们不需要为大笔的现金交易和 而头疼,取而代之的是在线支付,如支付宝、快捷支付,交易的不再是简单的现金,而 是电子现金,更不用大老远的去实体店购物和参加会议协商。但也无可避免的带来的隐 患,也就是交易过程中的安全问题,如何保证信息的保密性,如何确定交易者就是本人,
3、 如何保证交易达成后双方不能否认,又如何保证交易信息(如日期)没有被篡改?于是 数字证书应运而生,数字安全证书提供了一种在网上验证身份的方式。安全证书体制主 要采用了公开密钥体制,其它还包括对称密钥加密、数字签名、数字信封等技术。数字 证书的加密机制保证了信息的保密性,数字签名等技术保证了数据的不可修改性,认证 机制保证了交易的不可否认性。虽然之前在密码学课程学习中有接触过有关数字证书的知识,但是大部分内容已变得生疏,所以在准备阶段,我就先去学校的图书馆浏览一些相关电子资源,以及借阅了张明德和刘伟写的PKI/CA/数字证书技术大全,打算使用 Java 语言编写,顺便借阅了叶乃文写的Java 语
4、言程序设计教程,从以往的硕士论文中可以知道,关于 CA 系统的设计见仁见智,不过总体上已实现了大体上的自己充当颁发机构进而进行数字证书的颁发。本次课程设计,在已实现的技术基础上进行功能、数据传输上的完善,在 Java 的keytool 中生成颁发机构的 keystone 以及颁发者的数字证书,然后将颁发者的信息加载, 用自己的私钥对提交的用户信息以及公钥进行签名,生成数字证书并颁发给用户。在用 户信息的提交的过程中,会先对用户身份进行身份认证,在验证用户身份合法之后,才 对用户进行签名,然后再保存用户的信息到数据库中。另外,在 CA 系统的设计过程中,考虑到用户因可能因丢失公钥而造成损失,所以
5、基于这个隐患而添加了一个用户证书挂失的功能,这样就能在很大的程度上减少用户的损失。在挂失之前会首先核对挂失者的身份是否合法,防止别人恶意的挂失行为,而且, 已经挂失的会弹出错误提示,避免重复挂失。在挂失之后会把公钥存入到不受信任的公钥数据库中,当用户再次使用该公钥时会也会弹出错误提示。而且,本次 CA 系统设计中一个人是可以使用多个验证信息申请多个用户证书的,这样就提高了数字证书用途的广泛性,而不必受限于数字证书在不同领域上的使用。12. 系统分析2.1 系统需求首先,我们先来看一下静态口令身份认证方式的的安全隐患:(1) 口令容易遗失用户名、口令在应用系统中以明文方式传输,容易被截取,造成口
6、令遗失,还有输入口令时被窥视造成口令遗失;用户名、口令存在数据库中,非法用户可以通过进入数据库获取口令信息。(2) 遗失不容易察觉用户口令遗失后,自己并不知道,不会采取措施防范遗失后可能造成的损失。(3) 大量口令需要记忆(不易保管)如果存在多个应用系统,可能存在多组用户名、口令,不方便记忆。然而,在使用数字证书代替传统静态口令身份方式具有以下优势:(1) 权威性:数字证书设备由 CA 中心颁发,使用其作为身份识别设备局域哦很高的权威性;(2) 不可伪造型:数字证书设备经过国家相关部门审核批准,设备中保存的用户私钥无法被读出,不可伪造;(3) 不容易被冒用:使用证书需要同时持有数字证书设备和设
7、备启动口令,缺一不可,因此只要保护好证书设备,他人无法冒用用户身份;(4) 不可破解:数字证书设备具有口令保护机制,在连续输入错误一定次数后,设备将锁定,防止暴力破解;(5) 容易保管:数字证书设备形状与普通 U 盘相似,方便携带保管,不易遗失;(6) 遗失容易发现:万一数字证书设备遗失,能够及时发现,并采取相应措施。根据以上分析,选择使用数字证书的身份模式,能够极大的提高用户身份的安全性, 保障应用系统用户身份安全。和传统”用户名+口令”应用模式,CA 具有高强度的通讯方式,能够实现传输数据的安全保障,是通过数字签名技术实现,通过签名验证确定数据 传输和存储的完整性,因为只有授权用户才能进行
8、解密并使用,所以保证了数据的机密 性;另外,这是通过数字签名技术实现的,因此用户不得否认签名操作,即不可否认性。本次课程设计是实现一个简单的 CA 颁发系统,基本要求如下:(1) 利用 Java 中的 keytool 生成的 Keystore 和 CA 证书来充当可信任的 CA 颁发机构,CA 颁发机构本身是存储有一定的用户的认证信息的,然后接受用户的认证请求,通过用户的认证信息可以判断申请用户是否合法或者用户的公钥是否已申请注册过;(2) 认证通过后开始接收用户信息和用户自己产生的 PublicKey(3) 接收完成后,先通过加载 CA 数字证书获得 CA 颁发机构的信息以及 CA 的私钥,
9、 然后对接收到的用户信息和公钥进行打包即数字签名,生成数字证书并颁发给用户,安全储存用户信息;(4) 数字证书吊销:这里是通过将用户需要挂失的公钥存入到不受信任的公钥数据库中,这样,该密钥将被作废;在挂失前会对挂失用户进行身份验证,防止恶意挂失行为,验证通过后还要访问一下不受信任的公钥数据库中是否已存在该公钥,若已存在则弹出错误提示;若不存在,则进行公钥挂失过程。挂失之后,当用户再次使用到该公钥认证时会弹出错误提示。2.2 数据库连接Navicat for MySQL 是一套专为 MySQL 设计的高性能数据库管理及开发工具。它可以用于任何版本 3.21 或以上的 MySQL 数据库服务器,并
10、支持大部份 MySQL 最新版本的功能,包括触发器、存储过程、函数、事件、视图、管理用户等。点击或选择文件 - 新建连接来设置连接属性。连接设置:在创建连接后,你可以连接到数据库,管理它的对象、表中的数据等。请看下面的帮助,以了解如何用最简单的方法运行这些操作。与数据库或模式工作:与数据库或模式的对象工作 Navicat 浏览器!Navicat 窗口包括一个导览窗格(左边的窗格)及一个对象窗格(右边的窗格)。导览窗格一个是导览连接、数据库及数据库对象的基本途径。它采用树状结构,让你透过弹出菜单快捷及方便地使用数据库和它们的对象。对象窗格显示开启表、查询等。在窗口顶部的工具栏提供其他控制项,你可
11、以用它来操作你的数据。navicat 如何连接 mysql:1、首先你电脑上必须安装了 mysql 的数据库。(如果你不清楚自己是否已经安装成功 mysql,你可以在开始菜单输入“mysql”,进行搜索)2、打开你的 Navicat for Mysql(这里也可以使用上面的方法,在开始菜单搜索框中输入navicat)3、打开后单机工具栏左边第一个connection,进入连接页面。34、最重要的一步:打开的界面有五个框需要输入,第一个:connection Name 需要输入的是你新建的连接的的名字,这里我们就命名为localhost,第二个: HostName/Ip Address 你需要输
12、入的是你本机的 ip 地址或者直接输入”localhost”, 这里我们选择第二种。 第三个:Port ,输入你安装时候的端口号,一般为默认的3306;第四个和第五个分别为:UserName 和 Password,意思为你需要输入你数据库名用户名和密码,我的用户名是:root,密码:。最后把下面那个Save Passwod的小框框给勾上。5、完成上面步骤,然后点击左下角有个testConnectiion如果弹出 success, 恭喜你直接点击右下角的save按钮就可以了。如果弹出 error ,你则需要再重新仔细查看自己哪里填错了。6、点击save后,你就可以双击“本地”(这里的本地是你刚才
13、输入的 connection Name),然后打开你的数据库了。2.3 功能需求用户证书信息设计:数字证书的主要思想是实现对于合法用户信息的数字签名并生成数字证书,然后颁发给合法用户,所以对于数字证书生成之前需要设计如下信息:(1) 版本(Version)版本信息,这个是证书的版本号,不同版本的证书格式是不同的(版本 1、版本 2、版本 3)。这里我用的是 V3 版本。(2) 序列号(Serial Number)证书序列号,同一身份验证机构签发的证书序列号是唯一的,这就是数字证书的不可否认性。(3) 颁发者(Issuer)颁发者,也就是 CA 颁发机构,指出这个证书是由谁颁发的;如果是自己所在
14、机构生成的,比如自己所在的公司,那么颁发者就是自己的公司。(4) 签名算法(Signature Algorithm)签名算法,指的是对数字证书进行签名的时候所使用的算法,可以根据颁发者的公钥进行解密。(5) 使用者(Subject)使用者就是证书的持有者,可以是个人、公司、企业、网站等等需要认证自己身份的个体或者集体。(6) 有效期(Valid form begin_date to end_date)证书的有效期就是证书所允许使用的期限,当数字证书过了有效期将无效,即对于用户身份的认证将无效,这就需要重新申请数字证书方能进行通信或者交易。(7) 公钥(Public Key)证书的公钥,主要是用来对消息进行加密的,这个证书的公钥是 2048 位的,他的值可以在对话框中看到,是很长的一段十六进制数。(8) 指纹和指纹算法指纹以及指纹算法,在证书发布的时候,发布机构会根据指纹算法先计算出整个证书的 hash 值,并使用证书发布机构的私钥对其进行签名构成一个指纹,并
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1