Linux进阶 看完不会你来找我;https协议,SSL/TLS协议;配置使用ssl完成https访问apache服务器;配置访问apache的cgi程序

HTTPS协议概述:

  1. HTTPS协议==HTTP协议+SSL/TLS协议,在HTTPS数据传输的过程中,需要用SSL/TLS对数据进行加密和解密,需要用HTTP对加密后的数据进行传输,由此可见,HTTPS协议是由HTTP和SSL/TLS协议一起合作完成的。至于二者之间的区别,HTTP协议有点类似于“裸奔”,他们数据传输是通过明文的形式做传输,即使约定了加密方式,但是第一次传输的时候还是明文;鉴于此,HTTPS使用的是非对称加密,为秘钥的传输外层再做一层保护,非对称加密的一组秘钥对中,包含一个公钥和一个私钥。明文既可以用公钥加密,用私钥解密;也可以用私钥加密,用公钥解密。
  2. SSL协议:网络安全协议(安全套接层)
  • SSL协议是在传输通信协议上实现的一种安全协议,采用公开秘钥技术,广泛支持各种类型的网络,同时提供三种基本的安全服务:

    • 认证用户和服务器,确保数据发送到正确的客户机和服务器;
    • 加密数据以防止数据中途被窃取;
    • 维护数据的完整性,确保数据在传输过程中不被篡改;
  • SSL协议的优势在于它与应用层协议独立无关,高层的应用层协议能透明的建立于SSL协议之上,SSL协议在应用层协议通信之前就已经完成加密算法,通信秘钥协商以及服务器的认证工作;在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性和完整性。

HTTPS通信机制:

一、客户端给服务端发送第一个http协议请求,进行三步操作:

  1. 客户端向服务端发送请求获取身份认证(非对称加密公钥);
  2. 客户端向服务端发送一个比如a = 1的常量;
  3. 客户端向服务端发送客户端支持的加密算法的列表,服务端中意哪个算法,确定后返回给客户端。

二、服务端接收到客户端的请求后,进行三步操作:

  1. 服务端采取一种非对称的加密算法,如:RSA算法生成公钥跟私钥对;
  2. 对公钥通过CA认证机构颁发的证书进行签名,(相当于数字签名);
  3. 给客户端返回四类数据:将经过签名的公钥返回给客户端、给客户端返回一个如 b = 3 的常量、返回一个计算公式、从客户端发送过来的包含加密算法的列表中确定一个加密算法如:MD5算法 返回给客户端。

三、客户端接收到服务端返回的四类数据后,进行六步操作:

  1. 获取到服务端返回的经过证书签名后的公钥后,通过CA认证机构校验本次访问的服务端的真伪,如果没问题,则服务端就是真的;
  2. 客户端生成一个随机字符串如:kfdn,结合服务端返回的 func = a + b + ‘kfdn’ 这个计算公式生成一个协议秘钥 比如:sss;
  3. 对刚生成的协议秘钥 sss 通过服务端发送过来的公钥加密成密文如:xxx;
  4. 对请求数据 ddd 通过刚生成的协议秘钥进行 对称加密 成密文如:kkk;
  5. 对 (xxx + kkk)通过服务端返回的加密算法 MD5,进行加密即:MD5(xxx + kkk) = ooo;
  6. 给服务端发送第二个http协议请求

四、服务端接收到客户端发送过来的三类数据后,进行三步操作:

  1. 通过MD5算法对 (xxx + kkk) 加密 看是否等于 ooo,等于则可证明数据未被篡改;
  2. 通过RSA算法生成的公私钥对中的私钥 对客户端发送过来的经过公钥加密后的协议秘钥进行解密
  3. 通过得到的协议秘钥 sss 对密文数据 kkk 进行解密为 ddd 。

图解:
在这里插入图片描述

一、配置使用 SSL 完成 https 访问 apache 服务器:

  • 1)安装 mod_ssl:
    mod_ssl是一种以openssl 的工具箱为基础专门为apache webserver 提供密码保护的软件。
[root@localhost ~]# yum install mod_ssl -y

在这里插入图片描述

  • 2)查看 ssl.conf:
[root@localhost ~]# cd /etc/httpd/conf.d
[root@localhost conf.d]# ls -l

在这里插入图片描述

  • 3)切换到 /www下 创建 myssl目录 在index.html中编辑内容:
[root@localhost ~]# cd /www/
[root@localhost www]# mkdir myssl
[root@localhost www]# cd /myssl
[root@localhost myssl]# echo "This is my first https page" > index.html

查看index.html:
在这里插入图片描述

  • 4)切换到 /etc/httpd/conf.d 对照 ssl.conf 配置自己的 myssl.conf:
[root@localhost ~]# cd /etc/httpd/conf.d			
[root@localhost conf.d]# vim myssl.conf

在这里插入图片描述
配置内容:

# 需要有一个目录,ssl要访问的目录
# 目录下需要一个index.html
# 设置目录权限
# 设置主机目录
<Directory "/www/myssl">
        AllowOverride None
        Require all granted
</Directory>

<VirtualHost 192.168.126.100:443 >
        SSlEngine on
        SSLProtocol all -SSLv3
        SSLCipherSuite PROFILE=SYSTEM
        SSLCertificateFile /etc/pki/tls/certs/localhost.crt
        SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
        DocumentRoot "/www/myssl"
        alias "/data" "/www/virtualDir/test.html"
</VirtualHost>

在这里插入图片描述

  • 5)查看防火墙状态,确保关闭:
[root@localhost conf.d]# systemctl status firewalld.service

在这里插入图片描述
如果没有关闭,使用命令关闭

[root@localhost conf.d]# systemctl stop firewalld
  • 6)查看seLinux的状态是否为宽容模式:
[root@localhost conf.d]# getenforce

设置seLinux的状态为宽容模式

[root@localhost conf.d]# getenforce

在这里插入图片描述

  • 7)重启 httpd 服务:
[root@localhost conf.d]# systemctl restart httpd
  • 8)通过浏览器访问或者curl --insecure https://IP地址:
[root@localhost conf.d]# curl --insecure https://192.168.126.100:443

在这里插入图片描述

二、配置访问apache的cgi程序:

  • 1)切换目录:
[root@localhost ~]# cd /var/www/cgi-bin/

在这里插入图片描述

  • 2)打开(或建立) test.cgi 文件:
    在这里插入图片描述
    进行配置:
#!/bin/bash
printf "Content-Type: text/html;charset=utf-8\n\n";
printf "Hello, World.";

在这里插入图片描述

  • 3)输入ip测试:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Murphy_Biao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值