在linux下实现https访问

来源:互联网

一、访问控制

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

wps_clip_image-19756[3][1]

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

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

wps_clip_image-4625[3][1]

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

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]

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

wps_clip_image-9629[3][1]

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

wps_clip_image-19484[3][1]

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

wps_clip_image-8663[3][1]

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

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

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

<Directory "主目录">

  Order allow,deny  //要注意order与deny的顺序

    Allow from all

</Directory>

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

wps_clip_image-14128[3][1]

三、加密访问 https

1、 Ssl的工作原理:

wps_clip_image-7411[3][1]

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

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

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

wps_clip_image-32244[3][1]

进入到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要自己创建:

wps_clip_image-22792[3][1]

给serial一个初始值:

wps_clip_image-28342[3][1]

用这指令生成一个密钥:

wps_clip_image-5463[3][1]

Gen表示生成密钥,rsa指的是非对称算法,1024指的是位数,注意存放位置与上面对应。

修改文件的属性:

wps_clip_image-5413[3][1]

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

wps_clip_image-31388[3][1]

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

wps_clip_image-7104[3][1]

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

wps_clip_image-19759[3][1]

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

wps_clip_image-15373[3][1]

综上,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、建立一个总目录,将下面要新建的一些文件都放在里面,便于管理:

wps_clip_image-21200[3][1]

wps_clip_image-925[3][1]

2、通过指令openssl gensra 1024 获得密钥,并且重定向到文件http.key,名字这是自己起的并且自动生成

wps_clip_image-29798[3][1]

看一下权限:

wps_clip_image-12590[3][1]

为安全改动权限:

wps_clip_image-17241[3][1]

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

wps_clip_image-4484[3][1]

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

wps_clip_image-15987[3][1]

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

wps_clip_image-16644[3][1]

wps_clip_image-28195[3][1]

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

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

wps_clip_image-5507[3][1]

wps_clip_image-27552[3][1]

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

wps_clip_image-15167[3][1]

7.vim ssl.conf:

wps_clip_image-29296[3][1]

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

wps_clip_image-18148[3][1]

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

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

wps_clip_image-22239[3][1]

wps_clip_image-19607[3][1]

这两项看上面的2和4目录。

wps_clip_image-20836[3][1]

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

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

得到如下的结果:

wps_clip_image-19534[3][1]

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

wps_clip_image-19982[3][1]

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

wps_clip_image-1542[3][1]

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

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

wps_clip_image-7319[3][1]

进行安装:

wps_clip_image-16249[3][1]

安装之后,再次访问:

wps_clip_image-25652[3][1]

因为访问的时候是通过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

wps_clip_image-27341[3][1]

这样明文就访问不到了!

发表评论