https加密访问web站点的实现
什么是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服务
启动httpd
[[email protected] Server]# service httpd start
[[email protected] Server]# cd /etc/pki
编辑文件[[email protected] pki]# vim tls/openssl.cnf
将match改为optional::
:88,90 s/match/optional
目的是为不同地区的人发证书
避免自己在安装证书时填写自己的国家地区 所以将改为默认值
必须要有43-57之间的三个目录和两个文件
必须有三个目录以及两个文件
三个目录/certs /crl /newcerts
两个文件 index。Txt serial
1 创建三个目录以及文件
[[email protected] CA]# touch index.txt serial
[[email protected] CA]# mkdir certs crl newcerts
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
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
2 产生自己请求证书的请求文件
[[email protected] certs]# openssl req -new -key http.key -out http.csr
3 利用请求去向ca请求证书
[[email protected] certs]# openssl ca -in http.csr -out http.cert
4 修改目录的权限
[[email protected] certs]# chmod 600 *
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额外的功能模块
重新启动httpd
[[email protected] conf.d]# vim ssl.conf
重新启动httpd
四 测试
找一台机器当web客户机
利用加密的https访问
确定后显示证书
解决这两个问题
1 不信任颁发证书的机构
只需安装机构的证书就信任颁发机构(ca)
然后查看证书
将根ca显示出来 形成证书链
[[email protected] conf.d]# vim ssl.conf
然后重新启动
[[email protected] conf.d]# service httpd restart
点击查看并安装证书
然后重新登陆访问网页
解决2 证书上提供的名字www.langzi.com与访问的192.168.88.128不符
解决方案有两种
1 dns服务器
2 修改本客户机的hosts文件
下边我们只修改本机的hosts文件来完成 dns慢慢与你分享
在我们电脑的
C:\WINDOWS\system32\drivers\etc
以记事本的方式打开并编辑
然后再重新访问web服务器
没有警告
成功解决
最后提示:就是http能访问而https也能访问做不到https的加密策略
这样只需编辑 vim /etc/httpd/conf/httpd.conf
将其中的访问端口80 改为443 这样只有https能够加密访问
转载于:https://blog.51cto.com/langzijishu/970198