使用SSL协议保证web服务通信安全(二、实战篇)

简介:

我的参赛主页是:http://2010blog.51cto.com/1060257,请各位支持我,给我投上宝贵一票,谢谢!

 

Apache服务器与客户端的通信是明文方式,很多通过HTTP协议传送数据的应用将受到黑客的威胁,信息的安全性难以得到保障。因此,本文就将对SSL协议进行深入剖析,并介绍如何使用SSL技术保护Apache服务器通信。

全文请见:http://netsecurity.51cto.com/art/201011/234421.htm

(续:使用SSL协议保证web服务通信安全(一、基础理论篇))

6.Apache中SSL原理

在SSL通信中,首先采用非对称加密交换信息,使得服务器获得浏览器端提供的对称加密的密钥,然后利用该密钥进行通信过程中信息的加密和解密。为了保证消息在传递过程中没有被篡改,可以加密Hash编码来确保信息的完整性。

服务器数字证书主要颁发给Web站点或其他需要安全鉴别的服务器,证明服务器的身份信息,同样客户端数字证书用于证明客户端的身份。

使用公用密钥的方式可以保证数据传输没有问题,但如果浏览器客户访问的站点被假冒,这也是一个严重的安全问题。这个问题不属于加密本身,而是要保证密钥本身的正确性问题。要保证所获得的其他站点公用密钥为其正确的密钥,而非假冒站点的密钥,就必须通过一个认证机制,能对站点的密钥进行认证。当然即使没有经过认证,仍然可以保证信息传输安全,只是客户不能确信访问的服务器没有被假冒。如果不是为了提供电子商务等方面对安全性要求很高的服务,一般不需要如此严格的考虑。

下面给出使用SSL进行通信的过程(参见图2):

(1)客户端向服务器端发起对话,协商传送加密算法。例如:对称加密算法有DES、RC5,密钥交换算法有RSA和DH,摘要算法有MD5和SHA。

(2)服务器向客户端发送服务器数字证书。比如:使用DES-RSA-MD5这对组合进行通信。客户端可以验证服务器的身份,决定是否需要建立通信。

(3)客户端向服务器传送本次对话的密钥。在检查服务器的数字证书是否正确,通过CA机构颁发的证书验证了服务器证书的真实有效性之后,客户端生成利用服务器的公钥加密的本次对话的密钥发送给服务器。
 

4)服务器用自己的私钥解密获取本次通信的密钥。

(5)双方的通信正式开始。

图2  SSL通信流程示意

图2  SSL通信流程示意

在一般情况下,当客户端是保密信息的传递者时,他不需要数字证书验证自己身份的真实性,如用户通常使用的网上银行交易活动,客户需要将自己的隐秘信息——账号和密码发送给银行,因此银行的服务器需要安装数字证书来表明自己身份的有效性,否则将会使得信息泄露。当然,在某些安全性要求极高的B2B(Business to Business)应用,服务器端也需要对客户端的身份进行验证,这时客户端也需要安装数字证书以保证通信时服务器可以辨别出客户端的身份,验证过程类似于服务器身份的验证过程。另外,在一些电子商务的应用中,可能还会使用到电子签名,或者为了信息交换的更加安全,会增加电子签名和消息校验码(MAC)。而在通常情况下,浏览器都会通过交互的方式来完成上述的通信过程,下面在Linux中对Apache采用SSL也会作详细地介绍。

3  安装和启动SSL

1.安装SSL

虽然Apache服务器不支持SSL,但Apache服务器有两个可以自由使用的支持SSL的相关计划,一个为Apache-SSL,它集成了Apache服务器和SSL,另一个为Apache+mod_ssl,它是通过可动态加载的模块mod_ssl来支持SSL,其中后一个是由前一个分化出的,并由于使用模块,易用性很好,因此使用范围更为广泛。还有一些基于Apache并集成了SSL能力的商业Web服务器,然而使用这些商业Web服务器主要是北美,这是因为在那里SSL使用的公开密钥的算法具备专利权,不能用于商业目的,其他的国家不必考虑这个专利问题,而可以自由使用SSL。

Apache+mod_ssl依赖于另外一个软件:OpenSSL,它是一个可以自由使用的SSL实现,首先需要安装这个软件。用户可以从网站http://www.openssl.org/source/上(如图3所示)下载Linux下OpenSSL的最新版本:openssl-1.0.0b.tar.gz。

图3  OpenSSL软件网站首页

图3  OpenSSL软件网站首页 
 

 

下载源代码安装包后,使用如下的步骤安装即可:

(1)用openssl-1.0.0b.tar.gz软件包安装OpenSSL之前,首先须要对该软件包进行解压缩和解包。用以下命令完成软件包的解压缩和解包:

#tar xvfz openssl-1.0.0b.tar.gz

(2)解压缩后,进入源码的目录openssl-1.0.0b,并使用配置脚本进行环境的设置。相应的命令为:

//改变当前目录为openssl-1.0.0b目录

#cd openssl-1.0.0b

//执行该目录下配置脚本程序

#./configure

(3)在执行./configure之后,配置脚本会自动生成Makefile。如果在设置的过程中没有任何的错误,就可以开始编译源码了。相应的命令及其显示结果如下:

#make & make install

安装好OpenSSL之后,就可以安装使用Apache+mod_ssl了。然而为了安装完全正确,需要清除原先安装的Apache服务器的其他版本,并且还要清除所有的设置文件及其缺省设置文件,以避免出现安装问题。最好也删除/usr/local/www目录(或更名),以便安装程序能建立正确的初始文档目录。如果是一台没有安装过Apache服务器的新系统,就可以忽略这个步骤,而直接安装Apache+mod_ssl了。

2.启动和关闭SSL

启动和关闭该服务器的命令如下所示:

#apachectl start:启动apache。

#apachectl startssl:启动apache ssl。

#apachectl stop:停止apache。

#apachectl restart:重新启动apache。

#apachectl status:显示apache的状态。

#apachectl configtest:测试httpd.conf配置是否正确。

# /usr/local/sbin/apachectl startssl

此时使用start参数为仅仅启动普通Apache的httpd守护进程,而不启动其SSL能力,而startssl才能启动Apache的SSL能力。如果之前Apache的守护进程正在运行,便需要使用stop参数先停止服务器运行。
 

 

然后,就可以启动Mozilla、IE或其他支持SSL的浏览器,输入URL为:https://ssl_server/来查看服务器是否有相应,https使用的缺省端口为443,如果一切正常,服务器将会返回给客户端证书,由客户端进行验证并且判断,是否接受该证书并进行下一步的通信过程。

下面以Linux下的Mozilla Firefox浏览器为例,来简要说明使用Apache+SSL服务器的过程。首先,图4给出了查看和验证该证书的相关提示;最后,图5则给出了证书验证成功后,采用SSL进行保密传输的具体界面示意:

图4  验证证书示意

图4  验证证书示意

图5  证书通过验证,正常通信开始

图5  证书通过验证,正常通信开始


















本文转自samsunglinuxl51CTO博客,原文链接:http://blog.51cto.com/patterson/435616 ,如需转载请自行联系原作者




相关文章
|
1月前
|
安全 搜索推荐 数据安全/隐私保护
深入探讨HTTPS协议的原理和工作流程
【2月更文挑战第10天】
36 4
深入探讨HTTPS协议的原理和工作流程
|
3月前
|
算法 安全 网络安全
HTTPS加密原理解析:保障通信安全的密码学算法
HTTPS加密原理解析:保障通信安全的密码学算法
54 0
|
4月前
|
安全 数据安全/隐私保护
详解HTTPS加密工作过程
详解HTTPS加密工作过程
221 1
|
存储 缓存 安全
深入浅出学习透析Nginx服务器的基本原理和配置指南「Https安全控制篇」
深入浅出学习透析Nginx服务器的基本原理和配置指南「Https安全控制篇」
205 0
深入浅出学习透析Nginx服务器的基本原理和配置指南「Https安全控制篇」
|
安全 网络协议 算法
即时通讯安全篇(九):为什么要用HTTPS?深入浅出,探密短连接的安全性
到底什么是HTTPS?为什么要用HTTPS?今天就借此机会,跟大家一起深入学习一下HTTPS的相关知识,包括HTTP的发展历程、HTTP遇到的问题、对称与非对称加密算法、数字签名、第三方证书颁发机构等概念。
155 0
即时通讯安全篇(九):为什么要用HTTPS?深入浅出,探密短连接的安全性
|
算法 数据安全/隐私保护
加密传输原理
数字签名,就是通过在数据单元上附加数据,或对数据单元进行秘密变换,从而使接收者可以确认数据来源和完整性。简单说来,数字签名是防止他人对传输的文件进行破坏,以及确定发信人的身份的手段。 目前的数字签名是建立在公共密钥体制基础上,它是公用密钥加密技术的另一类应用。
1023 0
|
安全 数据安全/隐私保护
一文看懂https如何保证数据传输的安全性的
一文看懂https如何保证数据传输的安全性的 大家都知道,在客户端与服务器数据传输的过程中,http协议的传输是不安全的,也就是一般情况下http是明文传输的。但https协议的数据传输是安全的,也就是说https数据的传输是经过加密。
1489 0
|
安全 网络安全 数据安全/隐私保护
网站使用https协议的数据安全防护之谈
说起https协议,大家都不会太陌生,简单来讲就是SSL证书,当访问我们网站的时候会直接显示绿色的标识,对于用户的访问,以及数据传输都会进行高强度的安全加密,防止用户的数据泄露,数据安全防护也是网站隐私保护的重要措施。
1304 0
|
Web App开发 存储 安全
https是如何做到客户端与服务端之间安全通信
https是什么。 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。
2276 0
|
安全 数据安全/隐私保护 Android开发
安卓应用安全指南 5.4.2 通过 HTTPS 的通信 规则书
5.4.2 通过 HTTPS 的通信 规则书 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.0 使用 HTTP/S 通信时,遵循以下规则: 5.4.2.1 必须通过 HTTPS 通信发送/接收敏感信息(必需) 在 HTTP 事务中,发送和接收的信息可能被嗅探或篡改,并且连接的服务器可能被伪装。
1013 0