http站点的安全性
http站点的安全性
1.1. http简介:
HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)[5] 和Internet工作小组IETF(Internet Engineering Task Force)[6] 合作的结果,(他们)最终发布了一系列的RFC,RFC 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、 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4、HTTP 0.9和1.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象。
5、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。
另一方面,在服务器不需要先前信息时它的应答就较快。
实现http站点的安全性主要有一下几个方面
1.身份验证 2.来源控制 3.加密访问
1.2. 网络拓扑:
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
找到httpd的默认站点目录<Directory "/var/www/html"> 将
AllowOverride None 改为 AllowOverride all
在/var/www/html/创建 一个.htaccess 的说明文件,说明文件包含一下内容:
autheuserfile
authname
authtype
required
来到/var/www目录下使用htpasswd 创建账号库.htpasswd并创建一个用户:
xiaoming 密码:123
进入/var/www/html/目录下建立一个小页面
重启httpd服务后打开一台客户机测试一下:
可以看到需要进行验证才能够访问,输入账号:xiaoming 密码:123 后成功看到了 welcome!!!
1.3.1. 案例二:
对httpd的默认站点进行来源控制
编辑httpd的配置文件/etc/httpd/conf/httpd.conf
找到httpd的默认站点目录<Directory "/var/www/html"> 在访问控制规则
写入只允许来源为192.168.2.50的主机访问
用一个地址为192.168.2.60的主机来访问服务器
直接跳出了测试页面访问不成功
使用地址为192.168.2.50的主机来访问
出现了welcome!!访问成功
1.3.2. 案例三:
加密访问
https加密访问示意图:
证书颁发机构CA 的实现 windows 中 安装证书服务
linux 中 openca
openssl
我们使用openssl来实现CA的功能:
编辑openssl的配置文件/etc/pki/tls/openssl.cnf
更改CA 的policy选项,把countryName、stateOrProvinceName、localityName
都改为可选择(optional)
根据自己的需要更改CA policy的默认选项
来到openssl的配置文件/etc/pki/tls/openssl.cnf 中的[ CA_default ]条目下看是否有这些默认文件如果没有创建这些文件用于建立CA的服务和产生CA自己的证书
在/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
为web服务器颁发证书:
创建一个目录用于存放httpd的私钥
[root@vbird ~]# mkdir /etc/httpd/certs/private
生成httpd的私钥
更改权限
[root@vbird private]# chmod 600 httpdkey.pem
使用httpd的私钥来申请httpd的请求文件httpdcert.pem
用httpd的请求文件httpdcert.pem向CA申请证书 httpd.cart
[root@vbird certs]# openssl ca -in httpdcert.pem -out httpd.cert
编辑/etc/httpd/conf.d/ssl.conf文件把httpd服务器和证书捆绑
重启httpd服务
打开一台测试机输入https://192.168.2.100
可以看到出现了证书选项
点击“查看证书”选择“证书路径”后安装证书,将rootca.org添加为受信任的根证书颁发机构
再次打开浏览器后访问成功!
本文出自 “CL's博客” 博客,转载请与作者联系!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。