来源:互联网
一、访问控制
1、要想实现用户访问控制,首先改动下面的这项为all,即允许用户访问控制:
![wps_clip_image-19756[3][1] wps_clip_image-19756[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image1975631.jpg)
身份验证的的原理是在服务器端有一个用户的文件,记录了一些允许访问的用户,如果不在这个文件内的用户无法访问。
2、首先在要保护的网站的主目录里面建立一个说明文件,这个文件时一个隐含文件,名字是固定的必须是".htaccess",这个文件的额目的是说明如何对来访者的身份进行验证的:
![]()
在这个文件里面要编辑上一下主要的语句:
authuserfile /var/www/.usrfile //记录用户文件的名字和路径,注意此时这个文件还不存在
authtype basic //身份验证的方式,这里是基本验证方式
authname "please input your name and passwors" //用于提示用户的对话框
require valid-user //规定只有有效的账户才可以登录
3、下面就要产生.usrfile文件
这个文件时通过指令htpasswd产生的,注意有个-c参数,这个就达到新建这个文件:
![wps_clip_image-3336[3][1] wps_clip_image-3336[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image333631.jpg)
到在此添加用户的时候,就不再需要-c参数了:
![wps_clip_image-9629[3][1] wps_clip_image-9629[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image962931.jpg)
这时候查看.usrfile,可以看到两个文件已经被添加成功:
![wps_clip_image-19484[3][1] wps_clip_image-19484[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image1948431.jpg)
重新启动httpd服务,在windows里面测验:
![wps_clip_image-8663[3][1] wps_clip_image-8663[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image866331.jpg)
当输入账号和密码的时候可以顺利访问。
二、来源控制(基于ip的访问控制)
当数据包来的时候,可以看到源ip地址,就是基于源ip地址的控制,可以控制单个ip、可以控制一个子网或者是某个ip段。
<Directory "主目录">
Order allow,deny //要注意order与deny的顺序
Allow from all
</Directory>
只需将拒绝的地址和允许的地址写在里面即可,可以通过查看日志看到:
![wps_clip_image-14128[3][1] wps_clip_image-14128[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image1412831.jpg)
三、加密访问 https
1、 Ssl的工作原理:
![wps_clip_image-7411[3][1] wps_clip_image-7411[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image741131.jpg)
注意第四步的时候,客户机用服务器的公钥加密时,私钥也放在了里面,这样服务器就可以得到私钥,进行解密。
如何实现这个过程呢?用linux自带的openca来实现。
首先进入一个目录编辑一个文件:
![wps_clip_image-32244[3][1] wps_clip_image-32244[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image3224431.jpg)
进入到tls目录中去,有一个openssl.cnf文件,编辑这个文件,主要要编辑的内容如下:
[ CA_default ]
44
45 dir = /../../CA //这里要改为:/etc/pki,
46 certs = $dir/certs //已经发行的证书放的位置,$dird相当于/etc/pki/CA
47 crl_dir = $dir/crl //吊销列表
48 database = $dir/index.txt //数据库
51 new_certs_dir = $dir/newcerts
53 certificate = $dir/cacert.pem //证书存放地,指的是发证机关的证书‚
54 serial = $dir/serial //初始号码
58 private_key = $dir/private/cakey.pem //私钥放置的位置,
注意上面的目录crl certs newcerts和文件index.txt serial要自己创建:
![]()
给serial一个初始值:
![]()
用这指令生成一个密钥:
![]()
Gen表示生成密钥,rsa指的是非对称算法,1024指的是位数,注意存放位置与上面对应。
修改文件的属性:
![wps_clip_image-5413[3][1] wps_clip_image-5413[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image541331.jpg)
密钥已经产生了,下面又密钥来产生证书,用下面的固定指令:
![]()
注意上面的证书的存放的位置是有上面的‚决定的,下面会出现如下,让输入如下的信息:
![wps_clip_image-7104[3][1] wps_clip_image-7104[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image710431.jpg)
可以修改这些参数的默认值,在ssl.conf文件中进行修改:
![wps_clip_image-19759[3][1] wps_clip_image-19759[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image1975931.jpg)
还有一个很重要的参数,将下面的88—90改成如图的这样,否则这个CA将只允许本国的本省的本单位的申请证书:
![wps_clip_image-15373[3][1] wps_clip_image-15373[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image1537331.jpg)
综上,CA就建立好了,共有三大步:一、编辑/etc/pki/tls/openssl.cnf 改动一个路径,新建三个目录两个文件。二、通过指令openssl gensra 1024 >/private/cakey.pem得到一个密钥,在58行。三、通过这个密钥得到证书,指令是openssl req -new - key private/cakey.pem -x509 -out cacert.pem -days 3650. 注意第二三步后面的目录是由openssl中决定的。
现在CA有了,相当于有了发证的机构,web向这个CA申请证书,但是申请证书必须要有密钥,在web服务器共有三步。一:获得密钥。二:申请证书。三:获得证书。
1、建立一个总目录,将下面要新建的一些文件都放在里面,便于管理:
![]()
![]()
2、通过指令openssl gensra 1024 获得密钥,并且重定向到文件http.key,名字这是自己起的并且自动生成
![]()
看一下权限:
![wps_clip_image-12590[3][1] wps_clip_image-12590[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image1259031.jpg)
为安全改动权限:
![]()
3、由密钥来请求证书,用下面的指令,http.csr是一个请求文件自命名:
![]()
然后输入系列下列的参数,请求完成:
![wps_clip_image-15987[3][1] wps_clip_image-15987[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image1598731.jpg)
4、最后由这个请求来获得证书[root@localhost cert]# openssl ca -in http.csr -out http.cert
![]()
![wps_clip_image-28195[3][1] wps_clip_image-28195[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image2819531.jpg)
可以讲整个cert目录的权限改成600,以保证安全!
5、web端要支持ssl,必须安装支持ssl的包:
![wps_clip_image-5507[3][1] wps_clip_image-5507[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image550731.jpg)
![]()
6.安装完成上面的包后,会在下面Apache的配置文件下发现多了一个ssl.conf文件:
![wps_clip_image-15167[3][1] wps_clip_image-15167[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image1516731.jpg)
7.vim ssl.conf:
![wps_clip_image-29296[3][1] wps_clip_image-29296[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image2929631.jpg)
由此可见ssl与http是模块结合的,并且端口是443.
![wps_clip_image-18148[3][1] wps_clip_image-18148[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image1814831.jpg)
可见ssl有自己的日志系统,进入与无法进入可以由这两个日志来看。
最重要的是这个文件必须指明证书和密钥的位置,通过下面这两个位置:
![]()
![]()
这两项看上面的2和4目录。
![wps_clip_image-20836[3][1] wps_clip_image-20836[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image2083631.jpg)
下面在一个进行windows2003中访问:
我的web服务器地址192.168.93.10,在windows2003中的ie进行访问:https://192.168.93.10
得到如下的结果:
![wps_clip_image-19534[3][1] wps_clip_image-19534[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image1953431.jpg)
如果点击是可以进行强制访问,这时候所产生的一切后果自己负责。为什么会这样呢?因为该证书不是可信任的机构的颁发的,怎样才能成为可信任的颁发机构:通过mms控制台或IE浏览器可以查看可以信任的站点:
![wps_clip_image-19982[3][1] wps_clip_image-19982[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image1998231.jpg)
让一个机构成为可信任的机构:
![wps_clip_image-1542[3][1] wps_clip_image-1542[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image154231.jpg)
首先要在这个路径中显示机构的名称:进入到lls.conf文件中编辑如下一行:![]()
其中后面的路径就是CA机构的证书,重新启动Apache,得到如下:
![wps_clip_image-7319[3][1] wps_clip_image-7319[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image731931.jpg)
进行安装:
![wps_clip_image-16249[3][1] wps_clip_image-16249[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image1624931.jpg)
安装之后,再次访问:
![wps_clip_image-25652[3][1] wps_clip_image-25652[3][1]](http://www.iigrowing.cn/wp-content/uploads/linuxhttps_70AF/wps_clip_image2565231.jpg)
因为访问的时候是通过192.168.93.10访问的,如果通过www.zhuzhu.com来访问就不会有这样的问题了,但是必须有dns可以解析www.zhuzhu.com和192.168.93.10的关系,这里做一个小实验,利用本地hosts文件来看一下:进入C盘WINDOWS>system32>drivers>etc>hosts;
在hosts文件里将www.zhuzhu.com 192.168.93.10写上去,然后通过https://www.zhuzhu.com来访问,结果如何呢?上面的信息提示都不会有直接可以进入页面中去。
如何只允许密文访问?只需要关闭80端口:
编辑/etc/httpd/conf/httpd.conf
![]()
这样明文就访问不到了!


