linux学习之旅(二十一(下))&Apache

配置 HTTPS

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。

  • HTTPSHTTP的区别主要为以下四点:
    • https协议需要到ca申请证书,一般免费证书很少,需要交费。
    • http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
    • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

自定义自签名证书

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

yum install mod_ssl -y
//安装,注意,是tcp传输'
yum install crypto-utils.x86_64 -y
genkey www.westos.com //给www.westos.com生成证书


//这两个就是认证生成的文件,锁和证书


//选择加密的大小512 最短的1024是最快,2048是标准,需要敲键盘所以选择1024


//等待,这里是准备生成

这里需要敲击键盘
//生成证书,此时需要敲击键盘,前面选择的越大,敲击的字符越多


//是否需要向CA发送,这个是需要费用的,在测试环境,当然是NO


//直接跳过,不需要保护私人key,后面要自己写,不然每次进入阿帕奇都要输入密码


//输入国家,省会,城市,公司,名称,网址,NEXT之后就完成了

出现一些信息提示,发现有钥匙和证书的存放地方:

还会在/etc/httpd/conf.d下生成ssl.conf,这里面的文件就是默认443端口的配置:

按照提示中的地址,修改ssl.conf中的所示部分:

完成后重启httpd生效

注意关闭火墙,或者给http,https都添加火墙策略
[root@dnst conf.d]# firewall-cmd --permanent --add-service=http
success
[root@dnst conf.d]# firewall-cmd --permanent --add-service=https
success
[root@dnst conf.d]# systemctl restart firewalld.service 
[root@dnst conf.d]# firewall-cmd --list-all
public (default, active)
  interfaces: eth0 eth1 team0
  sources: 
  services: dhcpv6-client dns http https ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

打开你的网页会出现网警的界面:

在 I Understand the Risks这个选项中选择添加,获取证书,就可以进入你的界面了

点击网址前面的锁的图标,选择更多信息
出来的界面选择View 证书,查看证书信息,这时显示的就是我们手动制作的证书

//注意本地解析,加密的端口是443


自动跳转加密网页(网页重写)

新建网页login.westos.com,创建在/var/www/westos/login/html中
编写网页:
echo "<h1>login.westos.com's home</h1>" >/var/www/westos/login/html/index.html

在/etc/httpd/conf.d下新建文件login.conf

vim 编辑双文件 
vim /etc/httpd/conf.d/login.conf
":sp /etc/httpd/conf.d/ssl.conf"
添加:
SSLEngine on   //将SSL功能开启'
//并且添加钥匙,锁 
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key

网页重写的关键步骤:

将之前的原始默认端口变成443并编认证
实现网页重写自动访问https
<Virtualhost *:80>   
//新建虚拟主机端口80,意为将80中的引导到443端口,把所有 80 端口的请求全部重定向由 https 来处理
RewriteEngine on 重写功能开启
RewriteRule ^(/.*)$ //匹配任意网址上输入的字符,除了空格
                    https:// //调转成为https://定向成为的访问协议
                             %{HTTP_HOST} //客户的访问请求
                                          $1 //匹配后面的内容
                                             [redirect=301]   
//301 临时重定向,访问一次,定向一次,因为网页后台会有刷新,所以一般用301'
//302 永久重定向

重启服务生效
因为用主机浏览器测试,主机添加本地解析
172.25.254.109 www.westos.com news.westos.com gongyi.westos.com login.westos.com

测试

在有本地解析的浏览器中输入http://login.westos.com
浏览器会直接跳转访问到https://login.westos.com


//成功实现网页重写


apache的官方帮助手册

安装httpd.conf 文件的帮助手册:

yum install httpd-manual.noarch -y

重启httpd生效

查看时输入 172.25.254.109/manual 里面
默认是英文,但是可以自己设置为中文模式

  • 里面可以查看到几乎所有的apache服务的教程,非常的有帮助

CGI

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

php 编写网页

安装php软件
在/var/www/html下编写index.php
进入/etc/httpd/conf/httpd.conf编辑
171 <IfModule dir_module>
172     DirectoryIndex  index.php index.html westos //设定最优先读的是php的网页
173 </IfModule>


vim index.php
<?php
phpinfo();
?>

重启服务,查看网页,已经更改:

perl语言编写网页

在apache手册中可以查看写法:
点击其中的 CGI:Dynamic Content
里面有cgi格式的文件写法,和涉及到相关文件的书写规范



下面设置cgi格式网页(perl语言)

vim /var/www/html/cgi/index.cgi
  1 #!/usr/bin/perl
  2 print "Content-type: text/html\n\n";
  3 print `date`;
chmod +x index.cgi ##添加执行权限生效

此时可以使用,但是不会显示网页,只会把文件显示出来,这是因为没有文件的支持

继续修改/etc/httpd/conf.d/default.conf
添加
  5 <Directory /var/www/html/cgi>
  6     Options +ExecCGI    //添加参数CGI的执行
  7     AddHandler cgi-script .cgi    //添加库
  8 </Directory>
systemctl restart httpd    //重启生效

但是还是显示不出来,这时查看可能是安全上下文不配对引起的

semanage fcontext -l | grep cgi
/var/www/cgi-bin(/.*)?    all files   system_u:object_r:httpd_sys_script_exec_t:s0

而ls -Zd /var/www/html/cgi
安全上下文是unconfined_u:object_r:httpd_sys_content_t:s0

所以更改

先更改selinux模式
setenforcing 0 //警告
修改:
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'
restorecon -RvvF /var/www/html/cgi
setenforcing 1 //变回强制模式

再次进入地址

显示成功


安装论坛

需要已经制作好的论坛模版
Discuz_X3.2_SC_UTF8.zip
安装在web服务器

  • 解压后查看安装的教程。进入readme查看readme.txt,里面记录了安装要求,安装步骤:

  • 按照说明给定相应文件的权限

[root@dnst html]# cd upload/
[root@dnst upload]# chmod 777 data -R
[root@dnst upload]# chmod 777 config -R

  • 因为这个模版是由php编写的,所以需要php相关插件的支持,php-mysql , php

  • 另外注意要保证setenforcing 0

  • 浏览器进入172.25.254.109/upload/install

    进入之后,会检测你的主机的配置,全部正确后就可以进入下一步

  • 填写数据库的认证信息,这个数据库的密码和用户名是真实的,设置管理员认证信息,进入安装界面,自动完成

  • 进入管理中心,首页不能正常显示:
    Please delete install/index.php via FTP!

  • 那么按照说明删除

  • 再次刷新就可以看到了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章