http端口为80端口 https端口为443端口
常见状态代码、状态描述的说明如下:
200 OK:客户端请求成功。
400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用。
403 Forbidden:服务器收到请求,但是拒绝提供服务。
404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
500 Internal Server Error:服务器发生不可预期的错误。
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
MIME类型
存在于HTTP响应报文的响应头部信息里,它是一种文本标记,表示一种主要的对象类型和一个特定的子类型
。常见的MIME类型
http协议请求的工作流程:
(1)终端客户在web浏览器地址栏输入访问地址
(2)web浏览器请求DNS服务器把域名 解析成web服务器的IP地址
(3)web浏览器将端口号(默认是80)从访问地址(URL)中解析出来
(4)web浏览器通过解析后的ip地址及端口号与web服务器之间建立一条TCP连接
(5)建立TCP连接后,web浏览器向web服务器发送一条HTTP请求报文
(6)web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文。
(7)web服务器关闭HTTP连接,关闭TCP连接,web浏览器显示访问的网站内容到屏幕上。
HTTP报文:
http报文中有很多行内容,这些行的字段内容都是由一些ASCII码串组成,但各个字段的长度是不同的
。http报文可分为两种,一种是从web客户端发往web服务器的http报文,称为请求报文
。另外一种是从web服务器发往web客户端的报文,称为响应报文
http请求报文:
http请求报文由请求行
、请求头部
、空行
和请求报文主体
几个部分组成
http响应报:
文由起始行
、响应头部
、空行
和响应报文主体
这几个部分组成
在搭建web服务器前的准备工作:
1.搭建服务 (Linux服务)
2.装包httpd (使用yum安装)
3.停止firewalld (使用systemctl stop firewalld关闭防火墙)
4.停止selinux setenforce 0 (0表示关闭1表示开启)
·httpd主配置文件:/etc/httpd/conf/httpd.conf
主要的参数有:
ServerRoot /etc/httpd #httpd服务的顶级目录为/etc/httpd
Listen 80 #监听在80端口80为web服务器的默认端口
ServerName 0.0.0.0:80 #匹配任意IP地址,监听端口在80端口
ServerAdmin root@localhost #一般为你的邮箱,有事的时候给你发邮件
User apache
Group apache
DoucumentRoot /var/www/html #网页文件存放的目录
<Directory />
AllowOverride none #目录标记不允许覆盖
Require all/ip/host denied #请求不允许
</Directory>
<Directory /var/wwww/html>
AllowOverride none #目录标记不允许覆盖
Require all/ip/host granted #请求允许
</Directory>
<IfModule dir_module> #加载一个目录模块
DirectoryIndex index.html
</IfModule>
356行 IncludeOptional conf.d/*.conf 加载所有的自配置文件
/etc/httpd/conf.d/*.conf
额外的参数文件。如果你不想要修改原始配置文件httpd.conf的话,那么你可以将你自己的额外参数文件独立出来,例如你想要有自己的额外设置值,可以将它写入/etc/httpd/conf.d/vhosts.conf(注意,扩展名一定是.conf),而启动Apache时,这个文件就会被读入主要配置文件当中了。
/var/www/html/
这就是默认的首页所在目录,当输入网址时所显示的数据,就是放在这个目录当中的首页文件(默认为index.html)。
案例一:要求搭建web服务器,能够访问到网页内容为"小胖,你咋这么胖呢!"
分析:进入
/var/www/html/
下修改index.html文件,内容为"小胖,你咋这么胖呢!",然后在浏览器的地址栏中输入ip地址进行访问。最后重启一下服务systemctl restart httpd
案例二:要求搭建web服务器,创建基于域名的虚拟主机,能够使用www.xiaopang.com和www.dapang.com各自的网站存放路径分别为/xiaopang和/dapang.内容自定.
分析:进入
/etc/httpd/conf.d/
下创建pang.conf文件
,内容如下:
分析:创建目录xiaopang和dapang目录并输入各自的内容,重启http服务
在windows下C:\Windows\System32\drivers\etc修改配置文件hosts增加下面两条语句,最后我们输入域名进行访问
案例三:
1.基于域名www.openlab.com可以访问网站内容为welcome to openlab!!!
2.给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站,
基于www.openlab.com/student 网站访问学生信息,
www.openlab.com/data网站访问教学资料
要求:
(1)学生信息网站只有song和tian两人可以访问,其他用户不能访问。
(2)访问缴费网站实现数据加密基于https访问。
https简介
https = http+ssL
SS
L 是“Secure Sockets Layer”的缩写,中文叫做“安全套接层
”。它是在上世纪90年代中期,由网景公司设计的。到了1999年,SSL 应用广泛,已经成为互联网上的事实标准。IETF 就把SSL 标准化。标准化之后SSL被改为 TLS(Transport Layer Security传输层安全协议)。SSL/ TLS
SSL协议分为两层:
SSL记录协议
(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能。
SSL握手协议
(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
客户端浏览器向服务器端发送如下信息:
1、客户端支持的SSL /TLS协议的版本号。
2、Cipher Suite(密钥算法套件)。
3、客户端产生的随机数,稍后用于生成"对话密钥"。
服务器端向客户端发送如下信息
1、确认使用的加密通信协议版本,如果浏览器与服务器支持的版本不一致,服务器关闭加密通信。
2、确认使用的加密方法。
3、服务器证书。
SSL协议提供的服务:
1)认证用户和服务器,确保数据发送到正确的 客户机和服务器
2)加密数据以防止数据中途被窃取
3)维护数据的完整性,确保数据在传输过程中不被改变。
当你在浏览器的地址栏上输入https开头的网址后,浏览器和服务器之间会在接下来的几百毫秒内进行大量的通信:
认证服务器
:浏览器内置一个受信任的CA机构
列表,并保存了这些CA机构的证书
。第一阶段服务器会提供经CA机构认证颁发的服务器证书,如果认证该服务器证书的CA机构,存在于浏览器的受信任CA机构列表中,并且服务器证书中的信息与当前正在访问的网站(域名等)一致,那么浏览器就认为服务端是可信的,并从服务器证书中取得服务器公钥,用于后续流程。否则,浏览器将提示用户,根据用户的选择,决定是否继续。当然,我们可以管理这个受信任CA机构列表,添加我们想要信任的CA机构,或者移除我们不信任的CA机构。
CA证书
X.509 标准
规定数字证书应包含标准化信息。具体地说,X.509 版本 3 证书包含下列字段:
版本号
证书所遵循的 X.509 标准的版本。
序列号
唯一标识证书且由证书颁发机构颁发的编号。
签名算法
CA用于对证书进行数字签名的hash算法。
X.509通用的证书格式包含三个文件:key,csr,crt
key是私钥文件,csr是证书签名请求文件
。用于提交给证书颁发机构(CA)对证书签名。crt是由证书颁发机构(CA)签名后的证书
,或者是开发者自签名的证书
,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息。
常见的HASH算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1。
对称密钥加密:加密和解密使用相同密钥。
对称加密算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES。
非对称密钥加密
:公开密钥加密使用一对非对称的密钥。一把叫做私有密钥
,一把叫做公开密钥
。私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得
。使用此加密方式,发送密文的一方使用公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听盗走。
对称秘钥---- 加密 解密
非对称秘钥-----公钥 (数据加密) 私钥(数据解密)
常见的非对称加密算法:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)。
访问域名前面已经说过了这里主要讲一下第二题
(1)学生信息网站只有song和tian两人可以访问,其他用户不能访问。
<VirtualHost 192.168.229.133:80>
DocumentRoot /www/openlab
alias /student /student
#灵活管理资源文件 alias 虚拟目录 真实目录路径
alias /data /data
ServerName www.openlab.com
</VirtualHost>
<Directory /student>
AuthType Basic #基本认证信息
AuthName "提示信息" #"提示信息"
AuthUserFile /etc/httpd/users #自定义文件用户信息文件
Require user song tian #多个用户用空格隔开
</Directory>
<Directory /data> #真实目录路径权限
AllowOverride none
Require all granted
</Directory>
#创建用户信息
[root@www conf.d]# htpasswd -c /etc/httpd/users song
//-c
创建一个加密文件
会提示你输入密码
[root@www conf.d]# htpasswd /etc/httpd/users tian
只有song和tian用户可以访问student文件里的东西,其他人不能访问
(2)访问缴费网站实现数据加密基于https访问。
[root@www certs]# openssl req -newkey rsa:4096 -nodes -sha256 -keyout money.key -x509 -days 365 -out money.crt
这里是证书文件个密钥文件一起创建,创建好了在把对应的文件移到对应的文件夹中就好了
注意这里的是相对路径,创建时最好先进入对应的文件夹中
/etc/pki/tls/certs/money.crt //证书路径
/etc/pki/tls/private/money.key //密钥文件路径
创建证书和密钥文件
<VirtualHost 192.168.229.133:443>
SSLEngine on //开启ssL加密验证
SSLCertificateFile /etc/pki/tls/certs/money.crt //指定证书路径
SSLCertificateKeyFile /etc/pki/tls/private/money.key //定密钥文件路径
DocumentRoot /www/openlab
alias /money /money
ServerName 192.168.229.133
</VirtualHost>
创建证书时需要输入的基本信息
Country Name (2 letter code) [XX]:86 //国家编号
State or Province Name (full name) []:shanxi //地名
Locality Name (eg, city) [Default City]:xian //城市
Organization Name (eg, company) [Default Company Ltd]:openlab //公司
Organizational Unit Name (eg, section) []:rhce //部门
Common Name (eg, your name or your server’s hostname) []:localhost //主机名
Email Address []:admin@admin.com //邮箱
第二种生成证书的方法(会提示给密钥文件创建一个密码)
在/etc/pki/tls/private/路径下先生成密钥
,使用下面的命令:
openssl genrsa -aes128 2049 > money.key
在/etc/pki/tls/certs/路径下生成证书文件
,使用下面命令:
openssl req -utf8 -new -key /etc/pki/tls/private/money.key -x509 -days 365 -out money.crt
案例:为该公司不同部门共享相应文档,例如:技术部的成员用户认证只能访问到该部门共享文件
首先创建配置文件,在/etc/httpd/conf.d/目录下自定义一个以.conf结尾的配置文件
创建对应的资源文件
1.创建目录给目录添加测试文件
mkdir -p /www/{jishubu,anquanbu}
2.创建测试文件
touch /www/anquanbu/{20..30}
touch /www/jishubu/{1..10}
3.创建测试组
groupadd anquan
groupadd jishu
4.创建测试用户
useradd heihei -g jishu
useradd xixi -g jishu
useradd haha1 -g anquan
useradd hehe2 -g anquan
5.创建密码文件/etc/httpd/users
htpasswd -c /etc/httpd/users heihei
输入对应的密码
htpasswd /etc/httpd/users xixi
输入对应的密码
htpasswd /etc/httpd/users haha1
输入对应的密码
htpasswd /etc/httpd/users hehe2
输入对应的密码
6.创建对应的组文件/etc/httpd/groups
,在组里添加下面的内容
7.重启服务,关闭防火墙和selinux
systemctl restart httpd
systemctl stop firewalld
setenforce 0
8.测试
haha1不是技术部的成员所以登录不进去
heihei是技术部的成员所以可以访问
xixi不是安全部的成员所以访问不了
hehe2是安全部的成员可以正常访问