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

Linux系统下的apache中关于CGI 、WSGI、 SSL安装证书及其私钥、网页重写(https)

2019-08-12 20:08 676 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/monster_warm/article/details/99167315

CGI动态页面与数据库交互(perl语言)

通用网关接口(CGI)是网站上放置动态内容的最简单的方法。CGI脚本可用于许多目的,但是谨慎控制使用哪个CGI脚本以及允许谁添加和运行这些脚本十分重要。编写质量差的CGI脚本可能为外部攻击提供了破坏网站及其内容安全性的途径。因此,在Web服务器级别和SElinux策略级别,都存在用于限制CGI脚本使用的设置。
PHP语言支持

cd  /var/www/html/
vim index.php
在文件中添加下面内容
<?php
phpinfo();
?>


在浏览器输入172.25.254.251/index.php没有报错,但是页面为空白,说明此时不支持php,动态界面

yum install php
cd /etc/httpd/conf.d/会出现php.conf
systemctl restart httpd

重新测试,出现如下界面


mkdir /var/www/html/cgi
cd /var/www/html/cgi/
vim index.cgi    ##可以在手册上查看CGI
chmod +x index.cgi    ##此时index.cgi中为静态命令

./index.cgi    ##执行,静态
将vim index.cgi中的命令变为 print `date`
./index.cgi  ##执行动态



在浏览器中输入   172.25.254.251/cgi/index.cgi  ##只显示脚本里面的程序,但是并不执行

cd /var/httpd/conf.d/
vim default.conf
在文件中写入:
<Directory "/var/www/html/cgi">
options +ExexCGI
AddHandler cgi-script ;
</Directory>

在浏览器中输入   172.25.254.251/cgi/index.cgi  ##重新测试


物理机访问虚拟机的https时要保证防火墙开启443开启这个端口,或者直接关闭防火墙

WSGI 提供python语言支持

WSGI 的全称是 Web Server Gateway Interface, 是为 Python 语言定义的 Web 服务器和 Web 应用程序之间的一种简单而通用的接口。类似的协议还有 CGI, FastCGI, uWSGI 等。该协议保证了 Python Web 应用和服务器之间的交互的通用性。WSGI支持多线程同时在线操作。
WSGI的配置

mkdir /var/www/html/wsgi/
cd /var/www/html/wsgi/
在发布目录中写入发布文件  ##在这里我们直接下载脚本文件,用于测试即可
##该脚本文件是一个显示系统时间的文件

cd /etc/http/conf.d/
vim vhost.conf
在文件中写入
<VirtualHost   *:80>
SeverName www.westoswsgi.com
WSGISriptAlias / /var/www/html/wsgi/sript.wsgi   ##脚本存放的路径,如果路径不正确,会出现Not Found的报错
</VirtualHost>

systemctl restart httpd ##会出现报错,原因是缺少wsgi的插件
yum install mod_wsgi
systemctl restart httpd  ##正常重启


vim /etc/hosts   ##本地域名解析文件
172.25.254.251 www.westoswsgi.com


测试
在网页中输入www.westoswsgi.com进行测试,出现以下界面则成功

配置HTTPS

apache的ssl没有自签名证书

yum install -y mod_ssl
systemctl restart httpd


在浏览器中输入以下网址

https://172.25.254.251 ##会提示网站安全性


进行下列操作,生成没有自签名证书



查看确认是否生成证书


自定义自签名证书
如果加密的通信非常重要,而经过验证的身份部重要,管理员可以通过生成self-signed certificate来避免与认证机构进行交互所带来的复杂性。
使用genkety实用程序(通过crypto-utils软件包分发),生成自签名证书及其关联的私钥。为了简化起见,genkey将在“正确“的位置(/etc/pki/tls 目录)创建证书及其关联的密钥。相应地,必须以授权用户(root)身份运行该实用程序
配置步骤在进行配置自定义自签名证书之前,需要将上面的没有自签名的证书删掉

1.安装软件包进行分发

yum install crypto-utils
genkey www.westos.com   ##生成www.westos.com这个域的钥匙,钥匙生成器


genkey www.westos.com ##生成www.westos.com这个域的钥匙,钥匙生成器
执行上述命令后出现以下界面



2.安装证书及其私钥

vim /etc/httpd/conf.d/ssl.conf
在子配置文件中加入安装证书及其私钥的位置
SSLCertificateFile 位置
SSLCertificateKeyFile  钥匙位置


测试
在浏览器中输入

https://www.westos.com
(域名已经解析)可以查看到自定义自签名证书


————————————————————————————————————————————————————————
上述自签名证书虽然可以生效,但是却只能在用户输入
https://
时才会访问,如果用户直接输入www.westos.com还是无加密页面,有潜在的安全隐患。
————————————————————————————————————————————————————————
上述问题的解决方法就是网页重写
网页重写
把所有80端口的请求全部重定向由https来处理
重新生成证书

输入genkey命令后进行上述一样的选择操作

cd /etc/httpd/conf.d/
cp news.conf login.conf
vim login.conf
##将文件中的news全部替换为login即可
mkdir -p /var/www/virtual/login/html
vim /var/www/virtual/login/html/index.html   ##网页中要显示的资源


——————————————————————————————————————————————————————————
本地域名解析
在浏览器中输入:

login.westos..com
(对应在login.conf里的SeverName)

发现还是无法重定向 原因是并没有在配置文件中告诉程序要把所有80端口请求全部重定向到https来处理。
————————————————————————————————————————————————————————

vim /etc/httpd/conf.d/login.conf
在文件中继续增加:
<VirtualHost *:80>
SeverName login.westos.com
RewriteEngine   On
RewriteRule   ^(/.*)$https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>

^(/.*):表示用户在浏览器中输入的所有字符
$1 :表示 ^(/.*)的值
redirect=301:表示永久重定向
%{HTTP_HOST} :表示客户请求主机


测试
在浏览器中输入

login.westos.com
(域名已经解析)可以看到http重定向到https
查看证书已经生成


进行上述在浏览器中添加证书的操作
网页重写操作成功

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: