栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

基于Liunx搭建https服务器(SSL协议/相关服务器搭建)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于Liunx搭建https服务器(SSL协议/相关服务器搭建)

问题:在浏览器中输入www.baidu.com之后发生了什么?

 1.把www.baidu.com解析成ip-> 域名解析
           a.计算机查看浏览器的dns缓存,如果没有则b
           b.计算机的dns本地服务器,如果没有则c (此时开始从根目录开始依次询问)
           c.先去请求根服务器——> www.bai.com——> .com的域名服务器在哪儿?
           d.本地dns再去请求.com域名服务器——> baidu域名服务器在哪儿?
           e.本地dns再去请求baidu域名服务器——> www域名服务器在哪儿?
           f.本地dns去请求www服务器——> 如果www域名服务器,有这个ip返回给你,

                                                                  如果没有,未能解析
2. 进行tcp连接: 三次握手
3. 发送http请求(http/https)
4. 获取响应
5. 浏览器进行渲染解析
6. 断开连接的时候: tcp四次挥手

        超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。

        HTTPS并不是一个新协议,而是HTTP+SSL。原本HTTP和TCP组合通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在了HTTP和TCP之间。 

    SSL协议:

        ①SSL记录协议 (SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能。

        ②SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

        SSL协议提供的服务:①认证用户和服务器,确保数据发送到正确的客户端和服务端②加密数据以防止数据中途被窃取③维护数据的完整性,确保数据在传输过程中不被改变。

    过程:

    首先客户端向服务端发送请求:
          ①客户端支持的协议版本号
          ②客户端支持的加密算法(密钥,算法)
          ③客户端产生随机数random_client_num1
     然后服务端在收到客户端发来的请求后回复:
           ①服务端发送协商好的协议版本
           ②服务端发送协商好的加密算法
           ③服务端发送服务器证书AC
           ④服务器产生随机数random_server_num1
    客户端在接受服务端发送到数据后:
           首先验证服务器证书AC合法性,如果不合法,通讯断开;如果合法,则可以从服务器证书中获取到公开的密钥。然后客户端通过证书里面的公钥产生一个对称密钥,然后用服务器公钥进行加密,并加密后的对称密钥传给服务器。
     此时,服务端接受到客户端发来的对称密钥:
        服务端通过用自己的私钥对客户端发来的对称密钥进行解密,并使用对称密钥进行文件传输。

SSL四次握手的具体过程:

        第一阶段: 此时客户端向服务端发送ClientHello包,服务端回复一个SeverHello包,此时客户端产生一个随机数client_null(这个阶段是客户端和服务端通信为hello包)

        第二阶段:此时服务端为唯一发送方,向客户端发送AC证书及其根连接发送给客户端,服务端会产生一个随机数server_null(Certificate[证书],Server Key Exchange[公钥],Certificate Request[验证客户端证书请求] 和ServerHello Done[hello结束])


        第三阶段:客户端成为这个阶段的唯一发送方,服务端成为唯一接收方。客户端在接受服务端发来的信息交流过程中产生第三个随机数:pre_master,这个随机数是根据服务端(根据公钥产生的对称密钥)和客户端产生的client_num和server_num通过密钥交换算法产生的。客户端将pre_master和产生这个随机数的对称密钥发给服务器。(此时客户和服务端都掌握三个随机数,利用相同算法算出main_master--->这就是对称密钥)

        第四阶段:此时服务端通过对称密钥将自己的算出的随机数发送给客户端,并达成SSL四次握手

搭建静态https的服务器:
//①使用yum下载文件包,进行httpd文件安装
[root@localhost ~]# yum install mod_ssl -y
//②配置创建连接的index.html文件(访问的目录)
[root@localhost www]# mkdir -pv https
[root@localhost www]# cd /www/https/
[root@localhost https]# vim index.html 
    // vim编辑index的文件
   This is my first https page
//③配置更改阿帕奇登录页面的权限设置
[root@localhost certs]# cd /etc/httpd/conf.d
    autoindex.conf  host.conf  README  ssl.conf  userdir.conf  welcome.conf
[root@localhost conf.d]# vim host.conf 
        //为分配权限 (文件位置,允许人,给予权限)
      
    AllowOverride  none
    Require all granted
    
        //监听这个ip地址下的443端口
    #listen 443
        // 配置虚拟机(文档位置,服务名,ssl服务引擎打开,协议选择,密码选择套件,认证证书(公钥,信息),配置私钥)
    
    documentRoot "/www/https"
    ServerName 192.168.220.132
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite HIGh:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
    SSLCertificateFile /etc/pki/tls/certs/localhost.crt
    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
    
[root@localhost conf.d]# systemctl stop firewalld
//刷新,关闭防火墙,设置可信任
[root@localhost conf.d]# setenforce 0
[root@localhost conf.d]# systemctl restart httpd

这个时候去访问(https://192.168.220.132显示为一个不安全的连接(原因:自己搭建的服务器没有获得AC认证)) 

基于https协议下搭建一个访问需要验证的网页:
//由于之前已经ym配置好centos
//首先设置密码和密码文件位置
[root@localhost usr]#  htpasswd -c /usr/local/etc/passwords test
        //passwd:123456
[root@localhost usr]#  mkdir -pv /usr/local/mysecret
[root@localhost usr]#  echo "My secret" >> /usr/local/mysecret/index.html
        //转到密码文件的index.html 并将passwords存放在mysecret下
[root@localhost usr]#  cd /etc/httpd/conf.d
[root@localhost usr]#  vim host.conf 
        //设置为监听8001端口
    listen  8001
    
    AuthType Basic
    AuthName "Hello"
    AuthBasicProvider  file
    AuthUserFile "/usr/local/etc/passwords"
    Require user test
    
    
    alias "/mysecret"  "/usr/local/mysecret"
    ServerName 192.168.220.132
    
        //alias为一个转移符,将如果访问文件"/mysecret",则会转移到"/usr/local/mysecret"
[root@localhost conf.d]# systemctl stop firewalld
        //刷新,关闭防火墙,设置可信任
[root@localhost conf.d]# setenforce 0
[root@localhost conf.d]# systemctl restart httpd
//此时可能会报错,需要修改文件的权限/usr/local/mysecret(chown +x /usr/local/mysecret)

此时如果需要访问这个带密码的文档时,需要在ip地址后加上端口号和这个文件位置 /mysecret

 基于https协议下搭建一个CGI访问的网页(动态页面):

         WSGI(Web Server Gateway Interface)是一个统一的Python接口标准(PEP 3333),该标准描述了Python应用如何与Web服务器通信,多个Python应用之间如何级联以处理请求。

//首先配置cgi的文件
[root@localhost ~]# mkdir -p /www/cgi
[root@localhost ~]# cd /www/cgi
        //在cgi文件内写入内容
[root@localhost ~]# vim cgi
    #!/bin/bash
    printf "Context-type:text/htmlnn"
    printf "Hello World for CGI"
[root@localhost ~]# cd /etc/httpd/conf.d
[root@localhost conf.d]# vim host.conf
    
    AllowOverride none
    Options +ExecCGI
    AddHandler cgi-script .cgi .py .pl
    require all granted
    
    listen 8002
    
    scriptAlias /cgi /www/cgi 
    ServerName 192.168.233.200
    
[root@localhost conf.d]# chown +x /www/cgi
//给予执行权限
[root@localhost conf.d]# systemctl stop firewalld
//刷新,关闭防火墙,设置可信任
[root@localhost conf.d]# setenforce 0
[root@localhost conf.d]# systemctl restart httpd

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/613562.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号