http站点的安全性

1.1. http简介:

HTTPHyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium[5] Internet工作小组IETFInternet Engineering Task Force[6] 合作的结果,(他们)最终发布了一系列的RFCRFC 1945[7] 定义了HTTP/1.0版本。其中最著名的就是RFC 2616[8] RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。为纪念Tim Berners-Lee提出HTTP后对互联网发展的贡献,万维网协会保留有他最原始提交的版本[9] 

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)[10] 

HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

HTTP协议的主要特点可概括如下:

1、支持客户/服务器模式。支持基本认证[11] 和安全认证(见后文《安全协议》)

2、 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GETHEADPOST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

4HTTP 0.91.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象。

5、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

另一方面,在服务器不需要先前信息时它的应答就较快。

 

实现http站点的安全性主要有一下几个方面

1.身份验证     2.来源控制    3.加密访问

 

1.2. 网络拓扑:

20FCCDF8304D4A799CC4AA98FC96AD6A

1.3. 实验环境 

HTTP server平台: Os     centos 6.4  版本号2.6.32-431.el6.i686  

32位操作系统

                   软件包  httpd-2.2.15-29.el6.centos.i686.rpm

                       openssl-1.0.1e-15.el6.i686.rpm

                       mod_ssl-2.2.15-29.el6.centos.i686.rpm

案例一:  

httpd的默认站点实现身份验证

 

安装好httpd,编辑httpd的配置文件/etc/httpd/conf/httpd.conf

E2926592C7CB4638BDEC4303808D8E34

找到httpd的默认站点目录<Directory "/var/www/html"> 

AllowOverride None  改为  AllowOverride all

A92867A67954433C900D50391F3B4502

/var/www/html/创建 一个.htaccess 的说明文件,说明文件包含一下内容:

 autheuserfile

 authname

 authtype

required

C9758AFA3101490997C76739F0A6D9B2

来到/var/www目录下使用htpasswd 创建账号库.htpasswd并创建一个用户:

xiaoming  密码:123

EA358705E0C44C7B9AC310E1E14D0AA8

进入/var/www/html/目录下建立一个小页面

5D69838003D4452CB68A1B2D4ADBAA71 

FE25AD2CAF24480AB9ADD1D185C9C928

重启httpd服务后打开一台客户机测试一下:

                       

08BE93ADD02343A2A027ADE1BE063AE2  F9E7CB1B85DC43E5B10AB81B47D8BB58 

   

可以看到需要进行验证才能够访问,输入账号:xiaoming 密码:123 后成功看到了  welcome!!!

4F521E6754704DE7BC079773019C8594

B754FA30732142B28BBF974F555C3889

1.3.1. 案例二:  

            httpd的默认站点进行来源控制

 

 

 

 

编辑httpd的配置文件/etc/httpd/conf/httpd.conf

E2926592C7CB4638BDEC4303808D8E34

找到httpd的默认站点目录<Directory "/var/www/html">   在访问控制规则

写入只允许来源为192.168.2.50的主机访问

0342B34E14374C2DB31FE2C72F0B8E83

 

 

用一个地址为192.168.2.60的主机来访问服务器

2046C5431A174F80A6AF02E03392A855

直接跳出了测试页面访问不成功

CFB558165A53436888294A251360C632

 

 

 

使用地址为192.168.2.50的主机来访问

  2902FA09E5FA49E5946175F3FF63B7FC 

 

出现了welcome!!访问成功

6774C6B9B6984C12A92E6156F1A3DA09

1.3.2. 案例三: 

加密访问

 

https加密访问示意图:

5A6D1F474046408F8B3CC7E98195AB5E

 

证书颁发机构CA 的实现    windows   安装证书服务

                     linux      openca

                                   openssl

 

我们使用openssl来实现CA的功能:

 

编辑openssl的配置文件/etc/pki/tls/openssl.cnf

更改CA policy选项,把countryNamestateOrProvinceNamelocalityName

都改为可选择(optional

4F687BA2704D45C1A230FD081F222104

根据自己的需要更改CA policy的默认选项

D1027499A2684D0A8DC83ED11BE2B74B

 

来到openssl的配置文件/etc/pki/tls/openssl.cnf 中的[ CA_default ]条目下看是否有这些默认文件如果没有创建这些文件用于建立CA的服务和产生CA自己的证书

1783A27C8C1043C188C92F0E4A8A7D7B

77EC9B38075B4416989DD4AB353803E5

/etc/pki/CA/目录下创建一个index.txt的索引文件用于记录CA所颁发的证书

[root@vbird CA]# touch index.txt

创建一个serial文件用于记录当前序列号并给它一个初始值01

[root@vbird CA]# touch serial

[root@vbird CA]# echo "01" >serial

使用openssl  genrsa产生一个rsa加密算法的CA自己的私钥,并输入到/private/cakey.pem

[root@vbird CA]# openssl  genrsa >private/cakey.pem

为了安全性更改cakey.pem权限

[root@vbird CA]# chmod 600 private/cakey.pem

使用cakey.pem来创建CA的公钥cacert.pem

24DE4B64BE5D4872889572FEFAEAF730

web服务器颁发证书:

创建一个目录用于存放httpd的私钥

[root@vbird ~]# mkdir /etc/httpd/certs/private

生成httpd的私钥

C9DC421E06304B7EA14A54E0396EA26C

更改权限

[root@vbird private]# chmod  600 httpdkey.pem

使用httpd的私钥来申请httpd的请求文件httpdcert.pem

6D47BD0AB8CF4633B9C9282A427BBF6F

httpd的请求文件httpdcert.pemCA申请证书  httpd.cart

[root@vbird certs]# openssl ca -in httpdcert.pem -out  httpd.cert

编辑/etc/httpd/conf.d/ssl.conf文件把httpd服务器和证书捆绑

A29AD4386BBD49AF9FC498456A779476

重启httpd服务

7F289343334A48A2B7EE85E07C9FA8A3

 

 

打开一台测试机输入https://192.168.2.100

 

2FA3E46A3DB84FD5BC2D07456E4FF924

可以看到出现了证书选项

E53C0FE9604545C3AD886662BF79DE1C

点击“查看证书”选择“证书路径”后安装证书,将rootca.org添加为受信任的根证书颁发机构

CC51921E56C846B38F78401BDA47F921 D6875BB6B8AE43FCA3CA39B95415B4BB

再次打开浏览器后访问成功!

C24F0524D44944EC9C5B688242E9D032