一、ssl简介

SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socket layer(SSL)安全协议是由Netscape Communication公司设计开发。该安全协议主要用来提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变,即数据的完整性,现已成为该领域中全球化的标准。由于SSL技术已建立到所有主要的浏览器和WEB服务器程序中,因此,仅需安装服务器证书就可以**该功能了)。即通过它可以**SSL协议,实现数据信息在客户端和服务器之间的加密传输,可以防止数据信息的泄露。保证了双方传递信息的安全性,而且用户可以通过服务器证书验证他所访问的网站是否是真实可靠。

二、

https  tcp 443端口

Ssl   安全套接层

Ssl的认证原理:

基于web的ssl认证过程及实验案例

(1) 客户端发送列出客户端密码能力的客户端“您好”消息(以客户端首选项顺序排序),如 SSL 的版本、客户端支持的密码对和客户端支持的数据压缩方法。消息也包含 28 字节的随机数。

(2) 服务器以服务器“您好”消息响应,此消息包含密码方法(密码对)和由服务器选择的数据压缩方法,以及会话标识和另一个随机数。
  注意:客户端和服务器至少必须支持一个公共密码对,否则握手失败。服务器一般选择最大的公共密码对。

(3) 服务器发送其SSL数字证书。(服务器使用带有 SSL 的 X.509 V3 数字证书。)
    如果服务器使用 SSL V3,而服务器应用程序(如 Web 服务器)需要数字证书进行客户端认证,则客户端会发出“数字证书请求”消息。在 “数字证书请求”消息中,服务器发出支持的客户端数字证书类型的列表和可接受的CA的名称。

(4) 服务器发出服务器“您好完成”消息并等待客户端响应。

(5) 一接到服务器“您好完成”消息,客户端( Web 浏览器)将验证服务器的SSL数字证书的有效性并检查服务器的“你好”消息参数是否可以接受。
   如果服务器请求客户端数字证书,客户端将发送其数字证书;或者,如果没有合适的数字证书是可用的,客户端将发送“没有数字证书”警告。此警告仅仅是警告而已,但如果客户端数字证书认证是强制性的话,服务器应用程序将会使会话失败。

(6) 客户端发送“客户端**交换”消息。此消息包含 pre-master secret(一个用在对称加***生成中的 46 字节的随机数字),和 消息认证代码( MAC )**(用服务器的公用**加密的)。
   如果客户端发送客户端数字证书给服务器,客户端将发出签有客户端的专用**的“数字证书验证”消息。通过验证此消息的签名,服务器可以显示验证客户端数字证书的所有权。
注意:如果服务器没有属于数字证书的专用**,它将无法解密 pre-master 密码,也无法创建对称加密算法的正确**,且握手将失败。

(7) 客户端使用一系列加密运算将 pre-master secret 转化为 master secret,其中将派生出所有用于加密和消息认证的**。然后,客户端发出“更改密码规范” 消息将服务器转换为新协商的密码对。客户端发出的下一个消息(“未完成”的消息)为用此密码方法和**加密的第一条消息。

(8) 服务器以自己的“更改密码规范”和“已完成”消息响应。

(9) SSL 握手结束,且可以发送加密的应用程序数据。

三、实验案例

案例简介:一台客户端,一台web服务器,中间通过一台ca服务器进行安全通信  

  拓扑图:

基于web的ssl认证过程及实验案例

实验过程:

Ca服务器的搭建:windows server 2008

基于web的ssl认证过程及实验案例

一直点击下一步

基于web的ssl认证过程及实验案例

一直点击下一步

最后点击安装即可

Web服务器的配置:(httpd已经安装)

[[email protected] Server]# yum install mod_ssl-2.2.3-31.el5.i386.rpm #安装ssl包

[[email protected] Server]# cd /etc/httpd/conf.d/

[[email protected] conf.d]# ll

[[email protected] conf.d]# cd ..

[[email protected] httpd]# mkdir certs  #创建证书目录

[[email protected] httpd]# cd certs/

[[email protected] certs]# openssl genrsa 1024  >httpd.key #生成私钥并重定向到httpd.key

[[email protected] certs]# cat httpd.key   #查看所生成的私钥

[[email protected] certs]# chmod 600 httpd.key   #改变该私钥文件的权限以确保安全

[[email protected] certs]# openssl req  -new -key httpd.key -out httpd.csr  #生成证书请求文件

基于web的ssl认证过程及实验案例

[[email protected] certs]# ll

total 16

-rw-r--r-- 1 root root 647 Mar 19 12:45 httpd.csr

-rw------- 1 root root 891 Mar 19 12:40 httpd.key

Web服务器通过浏览器递交证书申请

http://192.168.6.100/certsrv/

基于web的ssl认证过程及实验案例

点击申请证书

基于web的ssl认证过程及实验案例

点击高级证书申请

基于web的ssl认证过程及实验案例

方框中填入生成的私钥(需要先找到)

基于web的ssl认证过程及实验案例

基于web的ssl认证过程及实验案例

基于web的ssl认证过程及实验案例

基于web的ssl认证过程及实验案例

基于web的ssl认证过程及实验案例

基于web的ssl认证过程及实验案例

基于web的ssl认证过程及实验案例

基于web的ssl认证过程及实验案例

说明:下载下来的证书在桌面上,需要将它放在图示文件夹中。

[[email protected] ~]# vim /etc/httpd/conf.d/ssl.conf    #编辑该文件,指定证书文件和key文件所在目录

基于web的ssl认证过程及实验案例

下面在客户端进行测试:

由于http的80端口未禁用,所以仍然可以通过http直接访问:

基于web的ssl认证过程及实验案例

禁用80端口 :

[[email protected] ~]# vim /etc/httpd/conf/httpd.conf

基于web的ssl认证过程及实验案例

[[email protected] ~]# service httpd restart

基于web的ssl认证过程及实验案例

已经无法访问了

下面通过https进行访问:

基于web的ssl认证过程及实验案例

基于web的ssl认证过程及实验案例

基于web的ssl认证过程及实验案例