首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

CA认证原理以及实现(上)

2012-11-14 
CA认证原理以及实现(下)在上述的文章后了解到原理之后,我们这篇文章来进行CA的搭建。OPEN SSL 环境搭建在基

CA认证原理以及实现(下)

在上述的文章后了解到原理之后,我们这篇文章来进行CA的搭建。

OPEN SSL 环境搭建
在基础原理中我们提到了两种认证服务,单项认证服务和双向认证服务,我们就以双向认证服务举例说明。
OpenSSL是一个开放源代码软件包,实现了SSL以及相关加密技术,是最常用的证书管理工具,OpenSSL功能远胜于KeyTool,可用于根证书(KeyTool不含有,因此KeyTool没有办法作为CA)、服务器证书、客户证书的管理。
在OpenSSL官网下载:http:www.openssl.org/source/下载最新的源码,官网还提供了windows版的二进制发行版地址:http://www.slproweb.com/products/Win32OpenSSL.html
?1、?准备工作
??选择适合自己操作系统的版本进行下载后,安装操作与普通软件一样,没有什么区别
??设置环境变量:
CA认证原理以及实现(上)

CA认证原理以及实现(上)

?

打开配置文件openssl.cfg(%OpenSSL_Home%\bin\openssl.cfg),找到配置[CA_default]:

CA认证原理以及实现(上)

上述变量dir,它指向的是CA工作目录,可以对其进行修改

2、?创建bat文件
整个bat文件的创建过程我们可以把它想象成这样一种场景:
高考结束,教育局来颁发毕业证书给各个学校,各个学校在把证书发给学生,具体步骤如下:
1)?教育局先有空白证书了
2)?教育局又有自己的公章
3)?让各个学校可以拥有毕业证发放申请
4)?对空白的毕业证盖上了教育局的公章,并可以交给已经申请的学校
5)?申请的学校拿到了盖有教育局的毕业证后,准备对其盖上自己的公章
6)?学校在教育局已经盖上教育局公章的毕业证上又盖上了自己学校的公章
7)?准备把毕业证发给学校申请毕业的学生们
8)?申请毕业的学生拿取自己的学生证和身份证准备领取毕业证
9)?来到学校教务处,填写单据申请学校发放毕业证
10)?教育局已经转交学校来发放毕业证,此时学校把毕业证发放给申请学生
11)?学生认为盖有教育局的公章和学校的公章的毕业证是有效的

?

上述步骤,都可以在下面的bat文件中找到相应的地方:

?

Certs文件夹下又生成了:

CA认证原理以及实现(上)

?

Private文件夹下又生成了:

CA认证原理以及实现(上)

?

4、?证书导入
我们使用ca.p12、server.p12、client.p12个人信息交换文件构建双向认证,在验证操作之前,我们先导入ca.p12、client.p12文件

ca.p12文件是ca根证书的个人信息交换文件:
双击”ca.p12”或者点击在浏览器"工具"->"internet选项"->"内容"中的"证书"->"导入"

CA认证原理以及实现(上)

点击“下一步”后,“浏览”按钮时,指定个人信息交换文件格式(*.p12;*.pfx), 选择“ca.p12的所在位置”:

CA认证原理以及实现(上)

?

CA认证原理以及实现(上)

?

输入私钥的密码:

CA认证原理以及实现(上)

?

选择“将所有的证书放入下列存储”:

CA认证原理以及实现(上)

?

点击“浏览”,选择“受信任的根证书颁发机构”:
CA认证原理以及实现(上)

?

?CA认证原理以及实现(上)

?

点击“下一步”,然后点击“完成”

导入”client.p12”文件:
导入clinet.p12文件的方式和ca.p12文件方式基本相似,只是在证书存储时,选择“个人”:
CA认证原理以及实现(上)

?

CA认证原理以及实现(上)

?

5、?服务器配置
将”ca.p12”、”server.p12”文件复制到tomcat的conf目录下:

CA认证原理以及实现(上)

同时,需要在windows系统下通过ie导入ca.p12和client.p12文件:

CA认证原理以及实现(上)

?

CA认证原理以及实现(上)

?

我们在tomcat的server.xml文件中配置双向认证:

?这里的密钥库文件参数keystoreFile指向server.p12文件,密钥库密码参数keystorePass值为”123456”,密钥库类型参数keystoreType值为”PKCS12”,因为双向认证服务区分信任库文件和密钥库文件,此时,server.p12文件将作为密钥库文件,而ca.p12文件则作为信任库文件,因此,信任库文件参数truststoreFile指向ca.p12文件,信任库密码参数truststorePass值为”123456”,信任库类型参数truststoreType值为“pkcs12”,clientAuth的值为”true”,这是打开双向认证的关键一步,port默认为8443,现在修改为443,这样就省去我们在地址栏中输入端口号。


?

效果展现

?输入我们证书绑定的网站,https打头:

CA认证原理以及实现(上)

?

?

?查看给该网站颁发的证书的属性:

CA认证原理以及实现(上)

?

点击授予权限:

CA认证原理以及实现(上)

?

如果我们是自己创建的根证书没有通过CA验证的话,那么会在地址栏中看到相关信息,如下图:

CA认证原理以及实现(上)

?


点击继续浏览, 虽然我们连接的是本地服务器,但仍然会感到有些延时,这是因为浏览器访问CA机构验证该证书,并初始化加密/解密等信息:
CA认证原理以及实现(上)

?

?上述我们看到“证书错误”,就是因为我们的根证书并没有得到CA的认证

?

我们如果加上验证的代码后:

?

可以看到如下结果:

CA认证原理以及实现(上)


上述有些相关属性解释:
javax.servlet.request.ssl_session:当前SSL/TLS协议的会话ID
java.servlet.request.key_size:当前加密算法所使用的密钥长度
javax.servlet.request.cipher_suite:当前SSL /TLS协议所使用的加密套件(比如上述:使用的TLS协议,RSA的非对称加密算法,AES的对称加密算法,同时是128的,SHA的消息摘要算法,CBC的工作模式,,,一般使用非对称加密算法对数据进行加密/解密操作的效率相当低,而使用对称加密算法进行加密/解密的效率相当高,合理的解决办法是使用非对称加密算法传递对称加密算法的密钥,使用对称加密算法对数据加密)
javax.servlet.request.X509Certificate:指向客户证书列表

热点排行