2、简述HTTP服务,并实现基于用户的访问控制,虚拟主机,https
(1)HTTP服务:
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它的主要特点如下:
(1.1)支持客户/服务器模式
(1.2) 简单快速:客户向服务器请求服务时,只需传送请求方法和路径,常见的请求方法有:GET、POST和HEAT。
(1.3)灵活:HTTP允许传输任意类型的数据对象
(1.4)无连接:限制每次连接只处理一个请求
(1.5)无状态:HTTP协议为无状态协议。
常见的HTTP服务器为:Apache 和 Nginx
(2)实现基于用户的访问控制
下面以basic认证机制来实现基于用户的访问控制
(2.1)定义安全域
<Directory “/devops/html/“> ? Options None ? AllowOverride None ? AuthType Basic ? AuthName “Only for user who Regist before” ? AuthUserFile /etc/httpd/users/.htpasswd ? Require user user1 user2
这里表示仅允许user1和user2,且他们出现于AuthUserFile文件中,这些用户为虚拟用户,而非系统用户
? (2.2)提供用户的账号文件
? 使用htpasswd命令进行维护
? htpasswd [OPTIONS] passwdfile userName
? 选项有:
? -c :添加第一个用户时创建此文件
? -m:以md5格式加密用户密码存放
? -s:以sha格式加密用户密码存放
? -D:删除指定用户
? (2.3)组认证
<Directory “/devops/html/“> ? Options None ? AllowOverride None ? AuthType Basic ? AuthName “Only for user who Regist before” ? AuthUserFile /etc/httpd/users/.htpasswd ? AuthGroupFile /etc/httpd/users/.htgroup ? Require group group1 group2 ?
然后在组文件中每行定义一个组,格式为
group1: user1 user2
group2: user3 user4
(3)实现虚拟主机:
一个物理主机可以服务于多个站点,每个站点可以通过一个或多个虚拟主机来实现,开启虚拟主机要首先关闭Main中心主机,即要注释DocumentRoot指令。
实现虚拟主机的方式有三种:
(3.1)基于IP,要求所有的IP地址都是有效的,且能用于通信
<VirtualHost 192.168.10.51:80> ServerName www.foo.com DocumentRoot /vhost/foo.com/htdocs/ </VirtualHost> <VirtualHost 192.168.10.61:80> ServerName www.bar.com DocumentRoot /vhost/bar.com/htdocs/ </VirtualHost>
(3.2)基于Port
<VirtualHost 192.168.10.51:80> ServerName www.foo.com DocumentRoot /vhost/foo.com/htdocs/ </VirtualHost> <VirtualHost 192.168.10.51:8080> ServerName www.bar.com DocumentRoot /vhost/bar.com/htdocs/ </VirtualHost>
(3.3) 基于FQDN
<VirtualHost 192.168.10.51:80> ServerName www.foo.com DocumentRoot /vhost/foo.com/htdocs/ </VirtualHost> <VirtualHost 192.168.10.51:80> ServerName www.bar.com DocumentRoot /vhost/bar.com/htdocs/ </VirtualHost>
(4)实现https:
https即http over ssl ,其通过https://来访问,对应的默认访问端口为443。注意SSL会话是基于IP地址创建,所以单IP的主机上,仅可以使用一个https虚拟主机。
(4.1)为服务器申请数字证书
创建私有CA
#openssl genrsa -out rootkey.pem 2048 #openssl req -new -key rootkey.pem -out root.csr #openssl x509 -req -days 365 -extensions v3_ca -signkey rootkey.pem -in root.csr -out root.crt
创建服务器证书密钥
openssl genrsa -out serverkey.pem 2048
在服务器创建证书签署请求
openssl req -new -key serverkey.pem -out server.csr
CA签证
openssl x509 -req -days 3650 -extensions v3_req -in server.csr -CA root.crt -CAkey rootkey.pem -CAcreateserial -out server.crt
(4.2)配置httpd
支持使用ssl
,及使用的证书文件
? yum -y install mod_ssl
? 配置文件:/etc/httpd/conf.d/ssl.conf
? DocumentRoot
? ServerName
? SSLCertificateFile 服务器证书文件crt
? SSLCertificateKeyFile 服务器证书密钥pem