您的位置:首页 > 理论基础 > 计算机网络

https加密访问web站点的实现

2012-08-22 18:32 357 查看
什么是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服务

.jpg]



启动httpd

[root@localhost Server]# service httpd start

[root@localhost Server]# cd /etc/pki

.jpg]



编辑文件[root@localhost pki]# vim tls/openssl.cnf

.jpg]



.jpg]



将match改为optional::

:88,90 s/match/optional

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

.jpg]



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

.jpg]



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

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

三个目录/certs /crl /newcerts

两个文件 index。Txt serial

1 创建三个目录以及文件

[root@localhost CA]# touch index.txt serial

[root@localhost CA]# mkdir certs crl newcerts

.jpg]



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

3 产生钥匙[root@localhost CA]# openssl genrsa 1024 >private/cakey.pem

Genssl:gen是产生 rsa是非对称加密算法

1024 是加密的长度

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

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

.jpg]



Ca创建完成

二 下边做自己的web服务器

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

1做自己的私钥

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

[root@localhost ~]# mkdir -pv /etc/httpd/certs

[root@localhost ~]# cd /etc/httpd/certs

[root@localhost certs]# openssl genrsa 1024 >http.key

.jpg]



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

[root@localhost certs]# openssl req -new -key http.key -out http.csr

.jpg]



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

[root@localhost certs]# openssl ca -in http.csr -out http.cert

.jpg]



4 修改目录的权限

[root@localhost certs]# chmod 600 *

.jpg]



Web服务器做成

三 然后让http与ssl结合

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

1 查询mod_ssl模块是否安装

[root@localhost Server]# yum install mod_ssl

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

2 编辑mod_ssl的配上文件

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

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

.jpg]



重新启动httpd

[root@localhost conf.d]# vim ssl.conf

.jpg]



重新启动httpd

四 测试

找一台机器当web客户机

.jpg]



.jpg]



利用加密的https访问

.jpg]



确定后显示证书

.jpg]



解决这两个问题

1 不信任颁发证书的机构

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

然后查看证书

.jpg]



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

[root@localhost conf.d]# vim ssl.conf

.jpg]



然后重新启动

[root@localhost conf.d]# service httpd restart

.jpg]

d

点击查看并安装证书

.jpg]



.jpg]



然后重新登陆访问网页

.jpg]



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

解决方案有两种

1 dns服务器

2 修改本客户机的hosts文件

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

在我们电脑的

C:\WINDOWS\system32\drivers\etc

.jpg]



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

.jpg]



然后再重新访问web服务器

.jpg]



没有警告

成功解决

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

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

将其中的访问端口80 改为443 这样只有https能够加密访问
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: