世界排名第一的web服务软件apache的祥解(从http到https),有这一篇apache就够了

1.什么是apache (Web服务器)?

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行
Apache是世界使用排名第一的Web服务器软件,它可以运行在几乎所有广泛使用的计算机平台上
由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一,也叫网页服务器软件 
它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中
同时Apache音译为阿帕奇,是北美印第安人的一个部落,叫阿帕奇族,在美国的西南部,也是一个基金会的名称、一种武装直升机等等

2.什么是http://协议?

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写
是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议
HTTP是基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统
HTTP协议工作于客户端-服务端架构为上,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求
Web服务器根据接收到的请求后,向客户端发送响应信息

HTTP工作原理:
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端
HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据
服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

以下是 HTTP 请求/响应的步骤:

1、客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.oakcms.cn。
2、发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
3、服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。
一个响应由状态行、响应头部、空行和响应数据4部分组成。
4、释放连接TCP连接
若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
5、客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
其实也是把服务端的东西共享给客户端
协议的支撑 <------软件 <-----程序
协议是两个人共同商量好的东西
curl -I www.baidu.com 嗅探(查看这些网站的服务名字)
两大主流服务
lamp linux apache mysql php/perl/python
lnmp linux nginx mysql php/perl/python
客户端访问apache服务,然后加载php这个插件,然后调用mysql数据库
apchece ,企业中常用的web服务,用来提供http://(超文本传输协议)

3.apache的基础信息

主配置目录/etc/httpd/conf
主配置文件/etc/httpd/conf/httpd.conf
子配置目录/etc/httpd/conf.d/
子配置文件/etc/httpd/conf.d/*.conf
默认发布目录/var/www/html
默认发布文件index.html
默认端口80
默认安全上下文httpd_sys_content_t
程序开启默认用户apache
apache日志/etc/httpd/logs/*

4.搭建实验环境

(1)重置并且开启我的desktop虚拟机

rht-vmctl reset desktop
rht-vmctl start desktop
rht-vmctl view desktop

在这里插入图片描述
(2)配置网络

cd /etc/sysconfig/network-scripts
ls
vim ifcg-eth0
systemctl restart network

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)改主机名字

hostnamectl set-hostname apache_server.example.com

在这里插入图片描述
(4)将selinux打开为enforcing,再reboot

apache服务,支持超文本传输的软件
selinux会影响apache,因此应该打开
遇到什么问题就就解决什么问题

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

5.在ip为172.25.254.111的这台虚拟机上搭建apache-web服务器

(1)配置本地yum源
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)安装部署apache服务并且查看最基本的一些东西

yum search apache寻找安装包

在这里插入图片描述

yum install httpd -y 安装apache软件

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

systemctl start httpd开启apache服务
systemctl enable httpd 开机启动

在这里插入图片描述

netstat -antlupe | grep httpd(查看httpd的服务端口80是否开启)

在这里插入图片描述

firewall-cmd --list-all				##列出火墙信息
firewall-cmd --permanent --add-service=http	##在火墙里面添加http服务   
firewall-cmd --reload				##重新加载使添加生效

在这里插入图片描述

man 5 httpd.conf找不到
yum install httpd-manual	##apache的手册(在浏览器里面输入就可以看到)

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

cd /var/www/html(httpd安装了以后才会有这个共享目录)
ls
cd /etc/httpd/conf((主配置目录)
ls 
cd ..(返回上一级目录)
ls
cd conf.d(子配置目录)
ls

在这里插入图片描述

rpm -qc httpd查看年主配置文件

在这里插入图片描述

rpm -qd httpd

在这里插入图片描述

rpm -ql httpd查看主配置目录

在这里插入图片描述
测试 http://172.25.254.100
在这里插入图片描述
在这里插入图片描述

/var/www/html			##apache的/目录,默认发布目录
/var/www/html/index.html	##apache的默认发布文件
vim /var/www/html/index.html
<h1> hello world </h1>
:wq

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

测试	http://172.25.254.100/manual
在浏览器里面输入我的apache浏览器的ip地址就能看到它共享出来的东西

在这里插入图片描述

6.apache服务的相关设置

先systemctl status httpd查看apache是否开启
再firewall-cmd --list-all查看火墙是否允许apache服务
在浏览器里面输入172.25.254.111查看是否能访问apache共享出来的东西

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

vim /etc/vimrc随便在哪一行写入
set nu
wq 使vim显示行号

在这里插入图片描述
在这里插入图片描述
(1)修改httpd服务的端口

vim /etc/httpd/conf/httpd.conf编辑httpd的主配置文件
搜Listen 将端口由80改为8080默认使用端口80
systemctl restart httpd重启才会生效

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

netstat -antlupe | grep httpd 查看端口是否改为8080查看端口是否修改成功

在这里插入图片描述

输入172.25.254.111(相当于172.25.254.111:80)此时找不到,因为已经将端口改为8080了

在这里插入图片描述

输入172.25.254.111:8080此时还找不到,因为selinux开启,没有在火墙里面添加8080端口

在这里插入图片描述

此时selinux为enforcing

在这里插入图片描述

firewall-cmd --permanent --add-port=8080/tcp在火墙里面添加8080端口
firewall-cmd --reload加载使其生效

在这里插入图片描述

输入172.25.254.111:8080就可以了

在这里插入图片描述

netstat -antlupe | grep 6666 查看6666端口是否被使用

在这里插入图片描述

vim /etc/httpd/conf/httpd.conf
Listen 6666将默认使用端口改为6666
systemctl restart httpd出现错误,因为selinux是开启的

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

setenforce 0关闭selinux
getenforce 查看selinux的状态

在这里插入图片描述

systemctl restart httpd 就可以了

在这里插入图片描述

semanage port -l | grep http查看http服务可以使用的端口

在这里插入图片描述

semanage port -a -t http_port_t -p tcp 6666在httpd服务中加入6666端口
semanage port -l | grep http 再次查看http服务可以使用的端口 

在这里插入图片描述

getenforce查看selinux的状态
setenforce 1开启selinux
getenforce再次查看selinux的状态
systemctl restart httpd重启服务

在这里插入图片描述

此时输入172.25.254.111:6666还不可以是因为没有在火墙里面添加6666端口

在这里插入图片描述

在火墙里面添加6666端口并且加载使其生效

在这里插入图片描述
在这里插入图片描述
(2)修改默认发布文件

vim /etc/httpd/conf/httpd.conf
将端口改为80
为了接下来的实验方便
systemctl restart httpd

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

cd /var/www/html 默认发布目录
ls查看默认发布文件 index.html
vim test.html在默认发布目录下面再编写一个文件,看会不会被默认共享
<h1>test'page</h1>

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

直接172.25.254.111访问的是index.html(默认发布文件)

在这里插入图片描述

输入172.25.254.111/test.html 才可以访问test.html

在这里插入图片描述

vim /etc/httpd/conf/httpd.conf
搜index.html
改为test.html将默认发布文件由index.html改为test.html
systemctl restart httpd

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

输入172.25.254.111直接看到test.html的内容

在这里插入图片描述

vim /etc/httpd/conf/httpd.conf
写入index.html test.html将二者都写入
systemctl restart httpd

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

172.25.254.111看到的是index.html默认共享第一个

在这里插入图片描述

mv index.html /mnt将这个文件移走

在这里插入图片描述

172.25.254.111看到的是test.html因为index.html已经不存在了

在这里插入图片描述
(3)修改默认发布目录

cd /var/www/html 默认发布目录
mkdir -p /meng/html新建一个目录,让它成为默认发布目录
vim /meng/html/index.html编写默认发布文件

在这里插入图片描述

<h1>/westos/html's page</h1>

在这里插入图片描述

vim /etc/httpd/conf/httpd.conf
搜/Doc找默认发布目录那一行
复制一行,注释掉原来的,防止自己手写把格式写错
/var/www/html----->/meng/html将默认发布目录改为/meng/html
systemctl restart httpd重启服务才会生效

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

输入172.25.254.111/index.html找不到,因为我新建的默认发布目录没有授权

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

ll -d /meng/html/查看这个默认发布目录是否存在
ll /meng/html查看默认发布目录下是否有默认发布文件
setenforce 0将selinux关闭

在这里插入图片描述

vim /etc/httpd/conf/httpd.conf
加入授权信息:
<Directory "/meng/html">
     Require all granted允许共享改目录下面的东西
</Directory>
systemctl restart httpd

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

输入172.25.254.111/index.html可以了

在这里插入图片描述

setenforce 1开启selinux
输入172.25.254.111/index.html不可以,因为自己新建的发布目录与默认发布目录的安全上下文不一致
ls -Zd /var/www/html查看默认发布目录的安全上下文
ls -Zd /meng/html 查看新建目录的安全上下文

在这里插入图片描述

semanage fcontext -a -t httpd_sys_content_t '/meng/html(/.*)?'修改安全上下文
restorecon -RvvF /westos/html加载生效
getenforce查看selinux是否为开启
输入172.25.254.111/index.html可以了

在这里插入图片描述

在这里插入图片描述

7.apache的虚拟主机(让一台apache主机有多个站点)

首先我的真机是可以上网的
当我在浏览器里面输入www.baidu.com时,百度浏览器会出来
当我点击百度里面的新闻时,它会跳转到news.baidu.com
当我点击百度里面的地图时,它会跳转到map.baidu.com
说明此时百度的阿帕奇服务有很多域名

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

我现在想使我的apache服务器上的news、music都有自己的默认发布目录和默认发布文件
但是一台主机一个站点太浪费资源了,我在apache主机上搭建虚拟机主机,使每个虚拟主机对应一个域名
可以百度的apache服务有很多域名,每一项都有自己的域名
cd /etc/httpd/conf.d/  默认发布目录
ls
vim vhost.conf(编辑虚拟主机的配置文件,主配置文件里面有要求,必须以.conf结尾)

在这里插入图片描述

<VirtualHost _default_:80>虚拟主机的apache服务默认也使用端口80
      DocumentRoot /var/www/html根共享目录
      CustomLog logs(etc/httpd/logs)/default.log combined日志的目录
</VirtualHost>

在这里插入图片描述

ll /etc/httpd/logs(日志的上一级目录)

在这里插入图片描述

vim /etc/httpd/conf/httpd.conf(查看配置文件里面的要求)
systemctl restart httpd

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

在真机里面vim /etc/hosts做本地解析(使用哪里的浏览器进行测试就在哪里做解析)
172.25.254.111  www.westos.com news.westos.com music.westos.com

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

发现输入www.westos.com news.westos.com music.westos.com均为/var/www/html这个默认发布目录下的发布文件里的信息
vim vhost.conf编辑虚拟主机的配置文件
cd 
mkdir -p /var/www/vhost/news给news建立默认发布目录
mkdir -p /var/www/vhost/music给music建立默认发布目录

在这里插入图片描述

vim /var/www/vhost/news/index.html给news编写默认发布文件
<h1>news's page</h1>

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

vim /var/www/vhost/music/index.html给music编写默认发布文件
<h1>music's page</h1>

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

cd /etc/httpd/conf.d/
ls
vim vhost.conf编辑虚拟主机的配置文件

在这里插入图片描述

<VirtualHost_default_:80>
      DocumentRoot /var/www/html
      CustomLog logs/default.log combined
</VirtualHost>
以上是虚拟主机的基本信息
<VirtualHost *:80>
	ServerName news.westos.com
	DocumentRoot /var/www/vhost/news
	CustomLog logs/news.log combined
</VirtualHost>
<Directory "/var/www/vhost/news">
	Require all granted
</Directory>
以上是news这个虚拟站点的基本信息和授权信息
<VirtualHost *:80>
	ServerName music.westos.com
	DocumentRoot /var/www/vhost/music
	CustomLog logs/music.log combined
</VirtualHost>
<Directory "/var/www/vhost/music">
	Require all granted
</Directory>
以上是music这个虚拟站点的基本信息和授权信息
systemctl restart httpd重启才会生效

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

服务起步来的原因是我手残将granted写成franted了
因此服务起不来的大多数原因都是配置文件写错,所以写的时候要认真

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

发现输入www.westos.com news.westos.com music.westos.com
均是自己的东西

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

8.apache内部的访问控制(想让谁访问谁才能访问,这样比较安全)

整体思路
cd /etc/httpd/conf.d/
ls
vim vhost.conf编辑虚拟主机的配置文件
systemctl restart httpd
在浏览器里面测试即可

(1)针对主机ip的访问控制

基于ip的访问控制,允许哪个ip可以访问,哪个ip不可以访问
allow,deny会有一个读取的先后顺序,后面的会覆盖前面的,相当于设置访问apache服务器的黑白名单
<Directory "/var/www/html/test">
Order Allow,Deny		##列表读取顺序,后读取的列表会覆盖前面列表内容的重复部分
Allow from All
Deny from 172.25.254.111
</Directory>相当于黑名单

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

测试:在真机里面输入firefox,输入172.25.254.111可以查看

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

在111自己里面输入firefox,输入172.25.254.111不行

在这里插入图片描述

<Directory "/var/www/html/test">
Order Deny,Allow		##列表读取顺序,后读取的列表会覆盖前面列表内容的重复部分
Allow from 172.25.254.111
Deny from All 
</Directory>  相当于白名单

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

测试:在真机里面输入firefox,输入172.25.254.111不行

在这里插入图片描述

在111自己里面输入firefox,输入172.25.254.111可以查看

在这里插入图片描述
在这里插入图片描述
(2)用户方式的访问控制(比ip安全)

先建立用户认证文件
cd /etc/httpd/在该目录下面
ls
htpasswd --help查看参数的意思

在这里插入图片描述

htpasswd -cm .apache_auth admin建立admin用户
输入密码
cat .apache_auth查看该文件
htpasswd -cm .apache_auth lee建立lee用户,-c会重新建立用户认证文件,覆盖之前的admin用户
输入密码会覆盖之前的用户
htpasswd -m .apache_auth admin(追加用户在文件里面不需要-c)
输入密码
cat .apache_auth
htpasswd -cm	/etc/httpd/userpass	admin建立admin用户
htpasswd -m 	/etc/httpd/userpass	admin1追加admin1用户

在这里插入图片描述

cd /etc/httpd/conf.d/
ls
vim vhost.conf

在这里插入图片描述

<Directory "/var/www/html">
AuthUserFile /etc/httpd/.apache_auth 认证文件类型
AuthType basic认证类型,基本
AuthName "Please input username and password"认证名字
#Require user admin 只允许admin用户通过认证访问共享目录
#Require valid-user允许所有用户访问
以上两个二选一
</Directory>

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

systemctl restart httpd

在这里插入图片描述

ctrl+shift+delete 清空缓存(不同浏览器的方法不同)
在浏览器进行测试

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

8.apache支持的语言(html php cgi wsgi)

html php perl python jsp asp
(1)php语言的设置

cd /var/www/html切换到默认发布目录下
ls 查看一下默认发布文件的语言类型,基本是html

在这里插入图片描述

vim /etc/httpd/conf.d/vhost.conf注释掉上一个实验

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

systemctl restart httpd

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

在浏览器里面输入172.25.254.111 看是否可以正常访问

在这里插入图片描述

编写一个php语言的默认发布文件
vim index.php
<?php
   phpinfo();
?>

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

vim /etc/httpd/conf/httpd.conf

在这里插入图片描述

index.php加入这个默认发布文件

在这里插入图片描述

systemctl restart httpd

在这里插入图片描述

php test.html调用不存在

在这里插入图片描述

yum insatll php -y安装这个服务

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

php index.php此时php已经存在

在这里插入图片描述

systemctl restart httpd

在这里插入图片描述

cd /etc/httpd/conf.d/
ls
出现了php.conf

在这里插入图片描述

在浏览器里面输入172.25.254.111就可以看到php的表格了

在这里插入图片描述
(2)cgi语言的设置

172.25.254.111/manual/查看apache服务手册,看设置cgi语言都需要在配置文件里面写入哪些内容
选CGI查看粘贴东西

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

cd /var/www/html
ls
mkdir cgi在默认发布目录下建立cgi目录
cd cgi/
ls
vim index.cgi写cgi的默认发布文件编写cgi语言的默认发布文件

在这里插入图片描述

写入刚刚粘贴的东西
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;
这个相当于一个测试的脚本

在这里插入图片描述

chmod +x index.cgi脚本要给一个可以执行的权限
./index.cgi可以看到时间调用脚本,看能否看到时间

在这里插入图片描述

172.25.254.111/cgi/index.cgi
看到的是源代码

在这里插入图片描述

172.25.254.111/manual/howto/cgi.html查看手册
复制
cd /etc/httpd/conf.d/
ls
vim vhost.conf编辑虚拟主机的配置文件

在这里插入图片描述

<Directory "/var/www/html/cgi">
       Options +ExecCGI
       AddHandler cgi-script .cgi
 </Directory>
 要使用cgi语言就要添加这个才会生效,手册要求

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

在这里插入图片描述

systemctl restart httpd

在这里插入图片描述

172.25.254.111/cgi/index.cgi报错

在这里插入图片描述

getenforce
setenforce 0(关闭selinux)

在这里插入图片描述

172.25.254.111/cgi/index.cgi显示时间

在这里插入图片描述

setenforce 1(开启selinux)

在这里插入图片描述

ls -Zd /var/www/html查看默认发布目录的安全上下文
semanager fcontext -a -t  httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?'更改安全上下文
restorecon -RvvF /var/www/html/cgi/加载使其生效
getenfoce再次查看selinux是否开启

在这里插入图片描述

172.25.254.111/cgi/index.cgi显示时间
以上是cgi的实验

在这里插入图片描述
(3)wsgi语言的设置

cd /var/www/cgi-bin/
wget ftp://172.25.254.250:/pub/webapp.wsgi拷贝一个测试脚本到上述目录下
ls

在这里插入图片描述

pwd
vim webapp.wsgi查看这个python脚本

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

python webapp.wsgi不能调用脚本

在这里插入图片描述

cd
yum search wsgi

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

systemctl restart httpd

在这里插入图片描述

cd /etc/httpd/conf.d/
ls
vim vhost.conf

在这里插入图片描述

写入手册要求的内容:
<VirtualHost *:80>
        ServerName wsgi.westos.com
        WSGIScriptAlias /   /var/www/cgi-bin/webapp.wsgi
</VirtualHost>
systemctl restart httpd

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

做本地解析:
wsgi.westos.com

在这里插入图片描述
在这里插入图片描述
在浏览器输入:wsgi.westos.com
在这里插入图片描述
在这里插入图片描述

9.https加密访问

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议)
是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL
它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。
https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。
这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。
现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
TTPS和HTTP的区别
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密
如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。
为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS和HTTP的区别主要为以下四点:
一、https协议需要到ca申请证书,一般免费证书很少,需要交费。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
客户端访问服务器的时候客户端那边是不安全的,虽然服务端自己很安全,但不能保证客户端访问服务端的时候客户端是安全的,因此可能会造成服务端不安全
https协议是加密访问
在能上网的真机里面输入www.baidu.com,发现会自动跳转到https://www.baidu.com

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

我现在也想将我的apache服务加密
这个加密锁需要开启443端口
netstat -antlupe | grep httpd

在这里插入图片描述

我们需要在自己的apache服务器上面安装锁
yum install mod_ssl -y

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

cd /etc/httpd/conf.d/
ls
vim ssl.conf可以看到443端口的文件已经存在

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

systemctl restart httpd

在这里插入图片描述
https://172.25.254.111 错误
在这里插入图片描述

firewall-cmd --permanent --add-service=https在火墙里面添加https服务
firewall-cmd --reload

在这里插入图片描述
https://172.25.254.111 错误
在这里插入图片描述

yum install crypto-utils -y安装自己的加密

在这里插入图片描述
在这里插入图片描述
genkey --help
在这里插入图片描述

genkey apache_server.westos.com 生成自己的锁和钥匙

在这里插入图片描述

填完信息之后就会生成钥匙和密码

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

cd /etc/httpd/conf.d/
ls
vim ssl.conf

在这里插入图片描述

写入自己的钥匙和密码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
systemctl restart httpd
在这里插入图片描述
在这里插入图片描述
https://172.25.254.111 ,发现已经是我自己生成的锁了
在这里插入图片描述
我的apache服务器可以使用https加密了
在这里插入图片描述
在这里插入图片描述

10.设定https虚拟主机并设定网页重写

(让172.25.254.111自动跳转到https://172.25.25.111

怎样让客户在自己的浏览器中输入172.25.254.111(80端口)时自动跳转为https://172.25.254.111(443端口)
cd /etc/httpd/conf.d/
ls
vim vhost_https.conf写入:(编写网页重写文件,名字任意,以.conf结尾就行)

在这里插入图片描述

<VirtualHost *:443>建立一个443端口虚拟主机,https需要开启443端口
ServerName login.westos.com
DocumentRoot /var/www/vhost/login建立默认发布目录
CustomLog logs/login.log combined

在这里插入图片描述

用真机ssh root@172.25.254.111
cd /etc/httpd/conf.d/
ls
vim ssl.conf
复制一些东西
SSLEngine on开启这个功能
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt钥匙
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key锁
</VirtualHost>

<Directory "/var/www/html/vhost/login">授权
         Require all granted
</Directory>
mkdir -p /var/www/vhost/login建立默认发布目录
vim /var/www/vhost/login/index.html建立默认发布文件

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

<h1>login.westos.com's page</h1>

在这里插入图片描述
systemctl restart httpd
在这里插入图片描述

做本地解析:(浏览器在哪在就哪做本地解析)
vim /etc/hosts

在这里插入图片描述
加入 login.westos.com
在这里插入图片描述

测试:在真机输入:https://login.westos.com可以 但输入login.westos.com不会自动到 https://login.westos.com

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

输入172.25.254.111/manual
选URL
查看网页重写的要求

在这里插入图片描述

<VirtualHost *:80>建立一个80端口的虚拟主机
     ServerName login.westos.com
     RewriteEngine on 将网页重写的功能开启
     RewriteRule  ^(/.*)$  https://%{HTTP_HOST}$1 [redirect=301](永久重定向:永久跳转)
                     客户端输入的内容        客户端主机
</VirtualHost>
systemctl restart httpd

在这里插入图片描述
在这里插入图片描述
测试:输入login.westos.com------>https://login.westos.com 成功

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

^(/.*)$客户在浏览器地址栏中输入的所有字符
https://强制客户加密访问
%{HTTP_HOST}客户请求主机
$1" 1 &quot; 表 示 ( / . ∗ ) 1&quot;表示 ^(/.*) 1"(/.)的值
[redirect=301]永久重写,302临时
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值