一、访问控制

1、要想实现用户访问控制,首先改动下面的这项为all,即允许用户访问控制:

 

身份验证的的原理是在服务器端有一个用户的文件,记录了一些允许访问的用户,如果不在这个文件内的用户无法访问。

2、首先在要保护的网站的主目录里面建立一个说明文件,这个文件时一个隐含文件,名字是固定的必须是".htaccess",这个文件的额目的是说明如何对来访者的身份进行验证的:

在这个文件里面要编辑上一下主要的语句:

authuserfile /var/www/.usrfile //记录用户文件的名字和路径,注意此时这个文件还不存在

authtype    basic         //身份验证的方式,这里是基本验证方式

authname  "please input your name and passwors" //用于提示用户的对话框

require  valid-user         //规定只有有效的账户才可以登录

3、下面就要产生.usrfile文件

  这个文件时通过指令htpasswd产生的,注意有个-c参数,这个就达到新建这个文件:

       

     

到在此添加用户的时候,就不再需要-c参数了:

    

这时候查看.usrfile,可以看到两个文件已经被添加成功:

重新启动httpd服务,在windows里面测验:

当输入账号和密码的时候可以顺利访问。

二、来源控制(基于ip的访问控制)

  当数据包来的时候,可以看到源ip地址,就是基于源ip地址的控制,可以控制单个ip、可以控制一个子网或者是某个ip段。

<Directory "主目录">

  Order allow,deny  //要注意orderdeny的顺序

    Allow from all

</Directory>

只需将拒绝的地址和允许的地址写在里面即可,可以通过查看日志看到:

三、加密访问 https

1、 Ssl的工作原理:

注意第四步的时候,客户机用服务器的公钥加密时,私钥也放在了里面,这样服务器就可以得到私钥,进行解密。

如何实现这个过程呢?用linux自带的openca来实现。

首先进入一个目录编辑一个文件:

进入到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指的是位数,注意存放位置与上面对应。

修改文件的属性:

 

密钥已经产生了,下面又密钥来产生证书,用下面的固定指令:

 

 

注意上面的证书的存放的位置是有上面的决定的,下面会出现如下,让输入如下的信息:

可以修改这些参数的默认值,在ssl.conf文件中进行修改:

还有一个很重要的参数,将下面的8890改成如图的这样,否则这个CA将只允许本国的本省的本单位的申请证书:

综上,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,名字这是自己起的并且自动生成

 

看一下权限:

 

为安全改动权限:

 

3、由密钥来请求证书,用下面的指令,http.csr是一个请求文件自命名:

然后输入系列下列的参数,请求完成:

4、最后由这个请求来获得证书[root@localhost cert]# openssl ca -in http.csr -out http.cert

可以讲整个cert目录的权限改成600,以保证安全!

5、web端要支持ssl,必须安装支持ssl的包:

 

6.安装完成上面的包后,会在下面Apache的配置文件下发现多了一个ssl.conf文件:

 

7.vim ssl.conf

由此可见sslhttp是模块结合的,并且端口是443.

可见ssl有自己的日志系统,进入与无法进入可以由这两个日志来看。

最重要的是这个文件必须指明证书和密钥的位置,通过下面这两个位置:

这两项看上面的24目录。

下面在一个进行windows2003中访问:

我的web服务器地址192.168.93.10,在windows2003中的ie进行访问:https://192.168.93.10

得到如下的结果:

如果点击是可以进行强制访问,这时候所产生的一切后果自己负责。为什么会这样呢?因为该证书不是可信任的机构的颁发的,怎样才能成为可信任的颁发机构:通过mms控制台或IE浏览器可以查看可以信任的站点:

让一个机构成为可信任的机构:

首先要在这个路径中显示机构的名称:进入到lls.conf文件中编辑如下一行:

 

 

其中后面的路径就是CA机构的证书,重新启动Apache,得到如下:

进行安装:

安装之后,再次访问:

因为访问的时候是通过192.168.93.10访问的,如果通过www.zhuzhu.com来访问就不会有这样的问题了,但是必须有dns可以解析www.zhuzhu.com192.168.93.10的关系,这里做一个小实验,利用本地hosts文件来看一下:进入CWINDOWS>system32>drivers>etc>hosts;

hosts文件里将www.zhuzhu.com 192.168.93.10写上去,然后通过https://www.zhuzhu.com来访问,结果如何呢?上面的信息提示都不会有直接可以进入页面中去。

如何只允许密文访问?只需要关闭80端口:

编辑/etc/httpd/conf/httpd.conf

这样明文就访问不到了!