Web网页的不同安全机制

Linux通过apachhttpd服务建立的web服务有3种不同的安全方式

  1. 身份验证 (通过账号密码验证用户的身份)

  2. 来源控制  (通过ip地址的过滤限定访问的用户)

  3. 加密访问  (通过数字证书保证数据的安全性)

一:身份验证的实现:

Centos安装完成httpd服务后启动

[root@wang Packages]# vim /etc/httpd/conf/httpd.conf   编辑配置文件

6283206D417C4B0382E924773E500216 

none改为all(开启身份验证)

[root@wang Packages]# cd /var/www/html/   进入网页主目录

[root@wang html]# vim .htaccess   创建点开头的隐含文件

B3254D78EB0C46F3B343CAE388888730 

authuserfile   /var/www/.htpasswd     //账号库密码的位置

authname   "please input your name and passwd"  //说明文字

authtype    basic                 //安全类型

require     valid-user             //针对的用户

将文件编辑为如此

[root@wang html]# cd ..        进入账号库文件放置的目录下

[root@wang www]# htpasswd -c .htpasswd wang   创建一个账号库文件且加入一个用户名为wang

5858D94C7B874359BBDD7519B2EFC4A3 然后提示输入密码

[root@wang www]# htpasswd .htpasswd centos         创建第二个账户

[root@wang www]# service httpd restart   重启httpd服务

然后浏览器访问测试下

445D2B8D60C7446F8A47C3AA93FEB7C6 

提示需要输入账号密码

B3EEE7491F944E858694A1E5495A62A2 

输入账号密码后成功访问

二:来源控制的实现

[root@wang www]# vim /etc/httpd/conf/httpd.conf   编辑配置文件

342行修改为

 Order deny,allow

 343     Allow from 192.168.2.10

 344     deny  from all

deny all,然后allow 192.168.2.10访问

[root@wang www]# service httpd restart    重启httpd

现在我虚拟机ip192.168.2.100,访问测试下

409CE8B36EF64117B12DC4774291D218 

60337C9EA9E94D3EB8B4A3B6B4BE6FA9 

无法登陆

5F81B51253A14784B807F920D0BD2FB3ip改为192.168.2.10访问

77771AD1D79342A48AB21A795402BBEE 

成功访问

784CB6CE311A4D74A50A7AB417B754A3 

从日志可以看到访问情况

三.加密访问的实现 

Openca

[root@wang www]# rpm -qa |grep openssl

openssl-1.0.1e-15.el6.i686     查看是否安装过相应的包,如果没有安装,请自行安装

[root@wang www]# cd /etc/pki/    进入pki目录

[root@wang pki]# vim tls/openssl.cnf    编辑证书配置文件

3749273B7E334987B7CB3976DA3A94D7 

找到此内容,修改为:

其中45行的index.txt  51行的serial  CA目录里没有,需要建个这文件

[root@wang modules]# cd /etc/pki/CA/

[root@wang CA]# touch index.txt

[root@wang CA]# touch serial

[root@wang CA]# echo "01" >serial  将serial加入编号

[root@wang CA]# openssl genrsa >private/cakey.pem  生成私钥文件放入当前private文件夹里的cakey

[root@wang CA]# cd private/

-rw-r--r--. 1 root root 887 Aug 18 16:59 cakey.pem

[root@wang private]# chmod 600 cakey.pem   (改变文件的权限以达到安全的目的)

[root@wang CA]# openssl req -new -key private/cakey.pem -x509 -out cacert.pem  输出公钥

错误!未找到目录项。

出现了输入名字,如果想要改变默认值可以编辑

[root@wang pki]# vim tls/openssl.cnf

A3CC9A7E1BD3431EA79AF9B9558E3F4D 

修改成

B9437F351C2A4A828B75BDA88841D870 

然后下面这些是默认值:

A778F5B5AA0C4540ADFB0A813BCD0FAF 

修改即可    然后执行

[root@wang CA]# openssl req -new -key private/cakey.pem -x509 -out cacert.pem

A1859B020E6A4C2FBD7C3B92112E14AD 

这些可以选择默认,也可以自己修改

[root@wang CA]# ll /media/cdrom/Packages/|grep ssl  需要安装和ssl相关的模块,先查询下

[root@wang CA]# yum --disablerepo=\* --enablerepo=c6-media install mod_ssl -y  然后安装

[root@wang CA]# rpm -ql mod_ssl   查询下是否安装成功

[root@wang CA]# vim /etc/httpd/conf.d/ssl.conf   可以查看证书配置文件

[root@wang CA]# mkdir /etc/httpd/certs  创建个cert目录

[root@wang CA]# cd /etc/httpd/certs/

[root@wang certs]# openssl genrsa >httpd.key  生产私钥给我当前目录新建的http.key文件

[root@wang certs]# chmod 600 httpd.key   更改权限达到安全的目的

[root@wang certs]# openssl req -new -key httpd.key -out httpd.req  相对于http.key私钥生成公钥

-----

Country Name (2 letter code) [CN]:

State or Province Name (full name) [BEIJING]:HENAN

Locality Name (eg, city) [BEIJING]:ZHENGZHOU

Organization Name (eg, company) [Default Company Ltd]:HAHA

Organizational Unit Name (eg, section) []:QQ

Common Name (eg, your name or your server's hostname) []:www.qq.com

Email Address []:

自己选择填写的选项

[root@wang certs]# openssl ca -in httpd.req -out httpd.cert  给httpd颁发证书

8B70E4CB903E4001B10FE3B6B36649D6 

[root@wang pki]# cd /etc/pki/CA/

[root@wang CA]# cat index.txt

V 150818112629Z 01 unknown /C=CN/ST=HENAN/O=HAHA/OU=QQ/CN=www.qq.com   

文件里有了文件

[root@wang certs]# vim /etc/httpd/conf.d/ssl.conf     将证书跟web服务器捆绑

382E2185DD354584982250FE3C3D3B83 

105 SSLCertificateFile /etc/httpd/certs/httpd.cert   改为证书所在的目录

112 SSLCertificateKeyFile /etc/httpd/certs/httpd.key   私钥文件所在目录

[root@wang certs]# service httpd configtest

Syntax OK       语法检测正确

[root@wang certs]# service httpd restart   重启httpd服务

[root@wang certs]# netstat -tupln |grep httpd

tcp        0      0 :::80                       :::*                        LISTEN      6664/httpd          

tcp        0      0 :::443                      :::*                        LISTEN      6664/httpd          

查看httpd端口,一个是明文端口80,一个是密文端口443,

进行测试

AE5175FACC304DF9888D3396DBDA163A 

提示需要安装证书

2C3983E70EAD45A4A177098B8A3D1D1B 

C16C00AF8AAA43DCB1721C10DBC2B350 

证书信息正是自己设置的,成功!如果不想每次访问的时候都提示安装证书可以使用域名访问,我这里做个简单的host代替dns

B6B925F08B104B14AEAD584DCA5117C4 

编辑此目录下的host文件

69CCEC2BAAB2427FA0C11BC5319D8FEB 

加入192.168.2.50   输入自己颁发的域名即可  即可