什么是WEB服务器

Web服务器是指驻留于因特网上某种类型计算机的程序。当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件发送到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。服务器使用HTTP(超文本传输协议)进行信息交流,这就是人们常把它们称为HTTPD服务器的原因。 Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。Web服务器是支持http,ftp gopher等协议的统称为web服务器  ,狭隘的可以理解为支持http协议的为web服务器

http版本:
          http有两个版本 1.0和1.1
          版本1.1比1.0多了持久连接(keepalive)功能 版本1.1可以让你一次访问 但是可以得到n多对象 不需要没请求一次对象就去请求对象

http与https :
           http不安全,利用的是明文显示  
           https安全利用的密文加密传输 主要是https在应用层与传输层之间加了一个ssl安全套接层,当客户机访问web服务器是,数据包到达传输层之前,先交给ssl安全套接层进行加密,然后再交给传输层传输,到达服务器后 先将数据包交给ssl安全套接层解密然后传输给应用层。所以数据包在传输的过程中都处于加密状态

web服务器的实现
     主要是

1 apache
2 nginx
3 lighttpd

https 实现加密的过程

1 客户机访问web服务器
2 web服务器出示自己的证书,证书包括web服务器的公钥,标识以及签名机关和签名
3 客户机利用证书上的公钥加密随即产生的k值
4 传到服务器后,服务器利用自己的私钥打开取出k值
5 利用k值解开数据包

Linux平台的web服务器可以做到三种安全控制

1 身份验证
2 来源控制
3 https加密访问

案例:

我们利用linux +apache 实现https加密访问
需求:

实现https需要ca 、web服务器以及web客户端 Ca是证书颁发机构 Linux有openca 开源的ca(开源的证书颁发机构)

 

实现过程

web服务器向ca请求颁发证书,若ca给予其颁发,则ca与服务器绑定。当web客户机访问web服务器时,web服务器出示证书

步骤
 

1 建立一个ca
2 web服务器向ca请求证书
3 http与ssl通过模块mod_ssl绑定结合
4客户机访问web服务器

 

 

一  建立一个ca(证书颁发机构)

安装httpd服务

https加密访问web站点的实现

启动httpd

[[email protected] Server]# service httpd start

[[email protected] Server]# cd /etc/pki

https加密访问web站点的实现

编辑文件[[email protected] pki]# vim tls/openssl.cnf

 

https加密访问web站点的实现

https加密访问web站点的实现

将match改为optional::

:88,90 s/match/optional

目的是为不同地区的人发证书

 

 

 

 

https加密访问web站点的实现

避免自己在安装证书时填写自己的国家地区  所以将改为默认值

https加密访问web站点的实现

 

必须要有43-57之间的三个目录和两个文件

       必须有三个目录以及两个文件

       三个目录/certs /crl /newcerts

        两个文件 index。Txt serial

1 创建三个目录以及文件

[[email protected] CA]# touch index.txt serial

[[email protected] CA]# mkdir certs crl newcerts

https加密访问web站点的实现

2  [[email protected] CA]# echo "01" >serial 给予serial第一份证书的序号为01

 

 

3 产生钥匙[[email protected] CA]# openssl genrsa 1024 >private/cakey.pem

Genssl:gen是产生 rsa是非对称加密算法
1024 是加密的长度

4  改权限 将钥匙文件的权限改我600 [[email protected] CA]# chmod 600 private/*

5  通过钥匙产生证书 [[email protected] CA]# openssl req -new -key private/cakey.pem -x509 -out cacert.pem -days 3650

https加密访问web站点的实现

Ca创建完成

二 下边做自己的web服务器

要求自己是web服务器 1 有自己的私钥 2 利用自己的私钥向ca请求证书 3 申请证书

1做自己的私钥

创建自己的私钥位置文件,表明私钥放在什么位置

[[email protected] ~]# mkdir -pv /etc/httpd/certs

[[email protected] ~]# cd /etc/httpd/certs

[[email protected] certs]# openssl genrsa 1024 >http.key

https加密访问web站点的实现

2 产生自己请求证书的请求文件

[[email protected] certs]# openssl req -new -key http.key -out http.csr

https加密访问web站点的实现

3 利用请求去向ca请求证书

[[email protected] certs]# openssl ca -in http.csr -out http.cert

https加密访问web站点的实现

4 修改目录的权限

[[email protected] certs]# chmod 600 *

https加密访问web站点的实现

Web服务器做成

三 然后让http与ssl结合

两者之间的结合靠模块mod_ssl结合起来

1 查询mod_ssl模块是否安装

[[email protected] Server]# yum install mod_ssl

利用yum保证自己的yum脚本配置正确

2 编辑mod_ssl的配上文件

装过ssl之后 在[[email protected] Server]# cd /etc/httpd/conf.d/会有一个ssl.conf

Conf.d里边装一些httpd额外的功能模块

https加密访问web站点的实现

重新启动httpd

[[email protected] conf.d]# vim ssl.conf

https加密访问web站点的实现

重新启动httpd

四 测试

找一台机器当web客户机

https加密访问web站点的实现

https加密访问web站点的实现

利用加密的https访问

https加密访问web站点的实现

确定后显示证书

https加密访问web站点的实现

解决这两个问题

1 不信任颁发证书的机构

只需安装机构的证书就信任颁发机构(ca)

然后查看证书

https加密访问web站点的实现

将根ca显示出来 形成证书链

[[email protected] conf.d]# vim ssl.conf

https加密访问web站点的实现

然后重新启动

[[email protected] conf.d]# service httpd restart

https加密访问web站点的实现d

点击查看并安装证书

https加密访问web站点的实现

https加密访问web站点的实现

然后重新登陆访问网页

https加密访问web站点的实现

解决2 证书上提供的名字www.langzi.com与访问的192.168.88.128不符

解决方案有两种

1 dns服务器

2 修改本客户机的hosts文件

下边我们只修改本机的hosts文件来完成 dns慢慢与你分享

在我们电脑的

C:\WINDOWS\system32\drivers\etc

https加密访问web站点的实现

以记事本的方式打开并编辑

https加密访问web站点的实现

然后再重新访问web服务器

https加密访问web站点的实现

没有警告

成功解决

 

     最后提示:就是http能访问而https也能访问做不到https的加密策略

这样只需编辑 vim /etc/httpd/conf/httpd.conf

将其中的访问端口80 改为443 这样只有https能够加密访问