网站地图    收藏   

主页 > 后端 > 网站安全 >

http站点访问安全案例 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 10:15 作者: 阅读:

[导读] HTTP:超文本传输协议(HyperText Transfer Protocol,)http是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的...

HTTP:超文本传输协议(HyperText Transfer Protocol,)

http是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。


HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个中间层,比如代理,网关,或者隧道(tunnel)。

 

HTTP协议的主要特点可概括如下

 

1、支持客户/服务器模式。
http 协议 简介
 
2、 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4、无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。
另一方面,在服务器不需要先前信息时它的应答就较快。

 

站点服务(apache 服务) :

 

首先Linux  下创建站点

所以安装服务先、再往下做;

但是要满足站点安全起码要满足 身份验证

 

还需要了解它的站点主目录网页在 /var/www/html/下,看可以设置网页信息,如果里面没有东西它会出现一个测试页welcome.conf;所以需在此更改选项和添加一些参数可以安全目录的访问权限和身份验证;

 

 

在/var/www/html/ 站点主目录下创建一个文件html; 内容可以自定;

然后按要求在站点目录下 创建各种需要的目录文件,

产生账号文件切换到此 /var/www/

htppasswd  输入htppasswd  -c  .htpasswd  mingcheng  各种账号信息

 

( 说明文件,目录安全性目录;在站点的主目录下产生说明文件,.htaccess )

 

 

看看有没有 刚创建的几种文件,

 

查看刚创建的 密码,但是密文,

 

然后重新启动 apache( service httpd restart )  ;访问“http:// 网络地址”。

 

 

就会显示一个账户提示对话框打开测试一下能不能登录;

登陆后提示的 就是刚书写 的 index.html 文件;

 

同样windows机器中

linux 可以 ,在win机器中创建也是很便捷的;

 

开始点开管理工具在internet 信息服务(IIS)管理器下面面;

打开目录有一个网站,默认网站、新建一个index.hml 文件,意识安全性,账户的登录身份验证,

看图是步骤:

 

接下来介绍 https ,也是apache安全机制一种:

HTTPS:超文本传输安全协议Hypertext Transfer Protocol Secure

是超文本传输协议和SSL/TLS的组合,用以提供加密通讯及对网络服务器身份的鉴定。HTTPS连接经常被用于万维网上的交易支付和企业信息系统中敏感信息的传输。HTTPS不应与在RFC 2660中定义的安全超文本传输协议(S-HTTP)相混。

与HTTP区别

与HTTP的URL由“http://网络地址”起始且默认使用端口80不同,HTTPS的URL由“https://”起始且默认使用端口443。

HTTP是不安全的,且攻击者通过监听和中间人攻击等手段,可以获取网站帐户和敏感信息等。HTTPS被设计为可防止前述攻击,并在没有使用旧版本的SSL时被认为是安全的。

还有就是https协议需要到ca申请证书,一般免费证书很少,需要交费。

实现网络层

HTTP工作在应用层(OSI模型的最高层),但安全协议工作在一个较低的子层:在HTTP报文传输前对其加密,并在到达时对其解密。严格地讲,HTTPS并不是一个单独的协议,而是对工作在一加密连接(TLS或SSL)上的常规HTTP协议的称呼。

HTTPS报文中的任何东西都被加密,包括所有报头和荷载。除了可能的CCA之外,一个攻击者所能知道的只有在两者之间有一连接这一事实。

服务器工作

要使一个网络服务器准备好接受HTTPS连接,管理员必须创建一数字证书,并交由证书颁发机构签名以使浏览器接受。证书颁发机构会验证数字证书持有人和其声明的为同一人。浏览器通常都预装了证书颁发机构的证书,所以他们可以验证该签名。

即 原理过程

当客户端使用https 访问web serever 时,它会对客户端出示一个证书;到客户端要检测证书,如果可行浏览器就会随机产生Key值,然后再利用证书上的公钥来加密key值,然后再把加密的key 值传送到WWW服务器,服务器利用自己的私钥打开,

 

接下来的过程就是加密解密

依图为例:

 

主要作用可以分为两种

一种是建立一个信息安全通道,来保证数据传输的安全

一种就是确认网站的真实

 

顺便以上图 做个小案例;简述原理过程:

 

安装 apache服务器;(也即通常所说的 httpd 网络传输协议)

然后打开 【rpm -ql httpd 】 安装文件都有哪些需要注意的

 

 

切换到 /etc/

声明一个变量叫dir  表示在某个目录下的CA;

所以就需要在这里更改为一个绝对路径CA, /etc/pki/CA ;

 

接下来去实现CA

在 /etc/pki/ 目录下 ( Vim  tls openssl.cnf 文件是现实 CA的功能 )

 

45 DIR =.. /../ CA                                 #一切都保存在哪里

46 certs=$ DIR/cersts                        #所发出的证书保存

47 crl_dir=$ DIR/ CRL                        #凡已发行CRL保持

48 database=$ DIR/ index.txt          #数据库索引文件。

49 #unique_subject=                       #设置为“no”,允许创建

50                                                        #ctificates几个相同主题。

51 new_certs_dir=$ DIR / newcerts          #默认为新证书目录。

52

53 certificate =$ DIR/ cacert.pem           #CA证书

54 serial=$ DIR/serial                               #当前的序列号

55cRLNumber=$ DIR / crlnumber         #当前CRL号码

56                                                                #必须注释掉留下V1 CRL

57 CRL =$ DIR / crl.pem                           #当前CRL

58 private_key=$ DIR/private/cakey.pem      #私钥

59 RANDFILE=$ DIR/private/.rand                  #私营随机的数字文件

60

61 x509_extensions= usr_cert                #添加到该证书的扩张

62

63                                          #注释掉以下两行的“传统”

64                                          #(破碎)格式。

65 name_opt= ca_default                     #主题名称选项

66 cert_opt= ca_default                        #证书字段选项

 

然后对于证书和私钥;要先建立私钥而后有证书,接下来根据证书生成私钥:

更需要设置 私钥的保密性,更改权限只有管理员可以查看;

 

切换到 vim openssl.cnf  下 更改一些默认值;

(设置一些符合所在地的属性设置)

 

 

更改CA 策略 :

 

按需求和条件 更改之后 然后重新执行一次,而后为自己颁发证书:

(更改后 可以与前面对比)

 

然后执行:

openssl req  -new  -key private/cakey.prm  -x509  -out cacert.pem

为自己签发一份证书,然后就会自动生成一些默认的值;

然后可以设置一系列的东西;

开始做设置

(例 :公司名称:seccenter  ,部门 tec   通用名:rootca.net.net )

 

完了在查看这个证书有没有产生,cacert.pem,至此使用openssl就把CA 架设好了,

所以 在linux 中是实现 CA  有两种方法:

一种是 openca (相对复杂),

一种是openssl ( 这里当然在要用相对为简便的用openssl。

 

因此大致流程就像这样

第一步 、要编译 /etc/pki/tls/openssl.cnf 文件;

dir的变量 各个更改

match策略 改为  optional

默认值 更改 。

第二步、  /etc/pki/CA 下 创建3个目录、两个文件,

mkdir  certs   newcerts    crl 证书吊销列表目录

touchindex,txt 数据库的索引文件(证书更新)  serial (初始证书的序列号文件)

第三步、 需要 这个机构有自己的私钥和 营业执照;

因为呢私钥的产生是靠 openssl genrsa  1024(密钥位数) oprivate/cakey.pem (重定向目录名称) 为防安全更改权限;

然后自签发  证书

openssl   req –new -key  private/cakey.pem –x509 –outcacert.pem

(-x 提取证书509格式、 因为公钥来自于私钥)

 

至此 CA 就建设好了 ;

( 默认情况下 只能接受 http 服务访问;允许其他的可以再更改一些参数;)

 

然后看web 服务器;

(因为默认情况下只能够提供http服务,80 端口,要想通过http是它使用的是443 端口,默认情况只能是443 ,所以要加模块,这个模块是 Mod_ssl* 模块,但发现是此库的安装时具有依赖性的;)

 

 

解决安装包的依赖性可以用yum ;但发现没装 也用不了;

 

用yum 安装不能用(没设置本地yum)那看来也也只有是一步步来了,

所以可以先查服务器目录下,有没有与此discache相关的并带有lib的目录的软件,

ll |grep dstcache 查找一下;确实有一些库

 

然后就开始安装呗  rpm –ivh discache

装好之后再重新装一下 mod_ssl,并看一下装的结果:

 

 

查看形成的文件 就可以大体了解web服务与这个库有哪些重要联系;

 

然后打开这个文件/etc/httpd/conf.d/ssl.conf  ,看看都有什么详细:

 

 2  # 这是Apache服务器配置文件提供SSL支持。

 3  # 它包含配置指令,以指示服务器如何

 4  # 页面通过HTTPS连接服务。对于这些详细信息

 5  # 指令看到<URL:http://httpd.apache.org/docs/2.2/mod/mod_ssl.html>的

 6  #

 7  # 不要简单地在这里阅读说明书不理解

 8  # 他们做什么。他们在这里只提示或提醒。如果您不确定

 9  # 咨询在线文档。你已经被警告。

10  #

11

12  #  LoadModule ssl_module模块/ mod_ssl.so

13

14  #

15  # 当我们还提供SSL我们要听

16  # HTTPS端口除了。

17  #

18  监听443端口 ( https )

19

20  #

21  # SSL全球背景

22  #

23  # 所有SSL配置在此背景下,既适用于

24  # 主服务器和所有启用SSL的虚拟主机

 

现在 web 服务器可以支持 ssl ,但根据原理当用户访问的时候需要出示证书

但是现在证书还没有;接下来为生成证书 做准备:

因为啊这个过程 :要有证书、就要现有私钥、有了私钥之后就产生请求文件去,有了请求文件就可以像CA 进行递交,CA才能颁发证书,还要有公钥,公钥的也是从私钥里来.)

 

为求方便新建一个目录,创建个小目录;

mkdir –pv  /etc/httpd/certs   然后再切换到此目录下,

来先产生私钥  openssl  genrsa 1024 > httpd.key  

然后更改权限  chmod   600  httpd.key

 

 

私钥有了之后开始做请求(当然包含公钥、公钥就是从私钥里提取的)

:openssl req –new –key  http.key  -out http.req

按默认需求提示做,就生成了请求文件;

 

 

既然做了出来 就看看key值

请求的密文:

 

openssl ca – in httpd.req   -outhttpd.cert   通过 ca请求文件 来得到了一份证书;

y 确认签发证书签发如下步骤:

 

完成签发之后数据库也会开始有所更新了,就是之前建立的 index.txt 文件更新,

cd /etc/pki/CA/  下可以查看;

 

至此各种私钥证书也有了;然后就是把要把他们捆绑一起,

在此先看下 这个配置文件 有哪些参数声明还可以改动:

在这里 : /etc/httpd/conf.d/ssl.conf  

 

 

注意了 这个还蛮重要:

112行 表明了 web 服务器的证书在哪,

119行   指明私钥文件    

所以就要在这里 动手脚了;

 

所以这里是为更改之后:

( 就是改成我们创建的文件目录 )

完成之后重新启动 ,再检测端口 ;ok了

 

接下来 就找个在同网段PC机访问看看

 

再 通过 https 访问192.168.0.1 试试 :

为什么会显示成这样呢,我建证书了啊,因为啊我们之前电脑里就有一些证书,所以此时就不被信用了;

所以可以给它添加安全案例;

还要更改一个路径 :

(仍然 是这个文件 /etc/httpd/conf.d/ssl.conf ;看前面来年各个已经更改过)

 

然后再重新启动在查看

再重新访问 https ;变成了链接式证书了,然后根据安装证书要求证书导入安装就可以了

要求安装证书呗

ok证书被信任了

是继续  就会出现 下面可以 登录查看站点了

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论