由于http是基于明文传输的,所以站点上的信息很容易被别人看到,为了实现我们的站点的安全性,我们通常的做法有三种:身份验证、来源控制和加密访问(https)。
1.身份验证:顾名思义,当用户访问我们的站点时,需要对访问者进行身份验证,只有用户输入正确的用户名和口令才能访问我们的站点内容。
环境:rhel 5.4
所使用的软件包:httpd-2.2.3-31.el5.i386.rpm
具体实现:
echo “welcome to my home”>/var/www/html/index.html 创建一个网站首页
vim /etc/httpd/conf/httpd.conf 修改httpd的配置文件
306
327 AllowOverride all 此处将none修改为all
335
service httpd start 启动httpd服务
在站点根目录创建一个名为.htaccess的说明文件,文件内容如下:
authuserfile/var/www/.htpasswd 指明验证库文件
authname "please input your name and password" 验证提示
authtype basic 指明验证类型
require valid-user 指明可访问的用户(合法验证的用户)
使用htpasswd产生.htpasswd帐号文件:
htpasswd -c /var/www/.htpasswd zhangsan(注意:在产生新文件时需要-c,追加用户时不需要)
New password: 123
Re-type new password:123
service httpd restart 重新启动httpd服务
2.来源控制:即我们可以限制允许和禁止哪些网段的用户的访问。
具体实现:
我们只需要在上面的基础之上对httpd的配置文件进行修改即可:
332 Order allow,deny
333 deny from 192.168.2.2 表示允许除192.168.2.2以外的用户访问
334 Allow from all
注意:332行的顺序,顺序不同,结果就不同哦!
3.加密访问:我们通过http和安全套接字ssl结合从而实现站点的安全性的验证。ssl是介于应用层与传输层的一个夹层,由于http是明文传输的,为了对其实现一定的安全性,网景(Netscape)公司开发出了ssl后经标准化组织标准化以后也被称为tls。
https的原理:client在访问server时,server会向client出具数字证书(该证书是由证书机构CA颁发的),证书内包含:持有者标识、序列号、公钥(n,e)、有效期、签发机构标识和CA的数字签名(数字签名可以保证信息的完整性、真实性和不可抵赖性,从而保证证书不被篡改)。此时,客户端会产生密钥K,并且在ssl层用服务器的公钥进行加密,经网络传到服务器端在ssl层经服务器的私钥进行解密,此时client与server就拥有相同的密钥K,接着client与server进行对称的加密解密的过程来进行信息传递。