目录
基于端口的虚拟主机
基于主机名的虚拟主机
配置status状态页
curl命令 curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议。curl支持HTTPS认证,并且支持HTTP的POST、PUT等方法, FTP上传, kerberos认证,HTTP上传,代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,上载文件断点续传, http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器,,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。 curl [options] [URL...] curl的常用选项: -A/--user-agent <string> 设置用户代理发送给服务器 --basic 使用HTTP基本认证 -e/--referer <URL> 来源网址 --cacert <file> CA证书 (SSL) --compressed 要求返回是压缩的格式 -H/--header <line>自定义首部信息传递给服务器 -I/--head 只显示响应报文首部信息 --limit-rate <rate> 设置传输速度 -u/--user <user[:password]>设置服务器的用户和密码 -0/--http1.0 使用HTTP 1.0 -X, --request <command>:自定义请求方法 用法:curl [options] [URL...] 另一个工具:elinks elinks [OPTION]... [URL]... -dump: 不进入交互式模式,而直接将URL的内容输出至标准输出; mod_deflate模块 使用mod_deflate模块压缩页面优化传输速度 适用场景: (1) 节约带宽,额外消耗CPU;同时,可能有些较老浏览器不支持; (2) 压缩适于压缩的资源,例如文件文件; SetOutputFilter DEFLATE # mod_deflate configuration # Restrict compression to these MIME types AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/css # Level of compression (Highest 9 - Lowest 1) DeflateCompressionLevel 9 # Netscape 4.x has some problems. BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html https协议
3.在服务器端创建签署请求,CA签证
5.客户端验证
http自带应用程序 htpasswd:basic认证基于文件实现,用于生成账号和密码的程序; -c:自动创建此处指定的文件,因此,仅应该在此文件不存在时使用 -m:md5格式加密 -s:sha格式加密 -D:删除指定用户 apachectl:httpd自带的服务控制脚本,支持start和stop等子命令; apxs:- APache eXtenSion tool 为httpd增添模块的; rotatelogs:日志切割 access_log, access_log, access_log.1, ... ab - web service的压力测试工具 ab [OPTIONS] [http[s]://]hostname[:port]/path 请求数:[ -n requests ] 并发数:[ -c concurrency ] 长连接:[ -k ]
虚拟主机配置
status状态页面
curl命令
mod_deflate模块
https配置
httpd自带应用程序
虚拟主机配置 有三种实现方案: 基于IP: 为每个虚拟主机准备至少一个IP地址 基于端口: 为每个虚拟主机使用至少一个独立的port 局域FQDN: 为每个虚拟主机使用至少一个FQDN注意:一般虚拟主机不要与中心主机混用; 因此,要使用虚拟主机,得先禁用’main’主机
禁用方法:注释中心主机的DocumentRoot指令即可
虚拟主机配置方法 <VirtualHost IP:PORT> # 指明IP和端口 ServerName FQDN # 指明主机名 DocumentRoot "" # 网页文档路径 </VirtualHost> 其它可用命令: ServerAlias:虚拟主机的别名;可多次使用; ErrorLog:错误日志 CustomLog:访问日志 ... 基于IP的虚拟主机示例1.创建虚拟主机配置文件
2.为每个虚拟主机提供网页文档
3.测试
基于端口的虚拟主机
1.创建虚拟主机配置文件
2.确认三个端口都已经监听
3.测试
基于主机名的虚拟主机
1.创建虚拟主机配置文件
2.在客户端hosts文件中添加主机名解析
3.测试
配置status状态页
1.确保status_module模块已加载
2.在配置文件中添加此项
3.测试
curl命令 curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议。curl支持HTTPS认证,并且支持HTTP的POST、PUT等方法, FTP上传, kerberos认证,HTTP上传,代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,上载文件断点续传, http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器,,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。 curl [options] [URL...] curl的常用选项: -A/--user-agent <string> 设置用户代理发送给服务器 --basic 使用HTTP基本认证 -e/--referer <URL> 来源网址 --cacert <file> CA证书 (SSL) --compressed 要求返回是压缩的格式 -H/--header <line>自定义首部信息传递给服务器 -I/--head 只显示响应报文首部信息 --limit-rate <rate> 设置传输速度 -u/--user <user[:password]>设置服务器的用户和密码 -0/--http1.0 使用HTTP 1.0 -X, --request <command>:自定义请求方法 用法:curl [options] [URL...] 另一个工具:elinks elinks [OPTION]... [URL]... -dump: 不进入交互式模式,而直接将URL的内容输出至标准输出; mod_deflate模块 使用mod_deflate模块压缩页面优化传输速度 适用场景: (1) 节约带宽,额外消耗CPU;同时,可能有些较老浏览器不支持; (2) 压缩适于压缩的资源,例如文件文件; SetOutputFilter DEFLATE # mod_deflate configuration # Restrict compression to these MIME types AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/css # Level of compression (Highest 9 - Lowest 1) DeflateCompressionLevel 9 # Netscape 4.x has some problems. BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html https协议
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS和HTTP的区别超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
SSL会话的简化过程 (1) 客户端发送可供选择的加密方式,并向服务器请求证书; (2) 服务器端发送证书以及选定的加密方式给客户端; (3) 客户端取得证书并进行证书验正: 如果信任给其发证书的CA: (a) 验正证书来源的合法性;用CA的公钥解密证书上数字签名; (b) 验正证书的内容的合法性:完整性验正 (c) 检查证书的有效期限; (d) 检查证书是否被吊销; (e) 证书中拥有者的名字,与访问的目标主机要一致; (4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换; (5) 服务用此密钥加密用户请求的资源,响应给客户端; 注意:SSL会话是基于IP地址创建;所以单IP的主机上,仅可以使用一个https虚拟主机; 配置httpd支持https (1) 为服务器申请数字证书; 测试:通过私建CA发证书 (a) 创建私有CA (b) 在服务器创建证书签署请求 (c) CA签证 (2) 配置httpd支持使用ssl,及使用的证书; # yum -y install mod_ssl 配置文件:/etc/httpd/conf.d/ssl.conf DocumentRoot ServerName SSLCertificateFile SSLCertificateKeyFile https配置实现 1.安装mod_ssl包,配置http支持https [root@centos7 ~]# yum -y install mod_ssl [root@centos7 ~]# httpd -M | grep ssl ssl_module (shared) [root@centos7 ~]# 2.建立私有CA(1)生成私钥
(2)生成自签证书
(3)为CA提供所需的目录及文件
3.在服务器端创建签署请求,CA签证
(1)生成私钥
[root@centos7 ~]# mkdir /etc/httpd/ssl [root@centos7 ~]# cd /etc/httpd/ssl [root@centos7 ssl]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)(2)生成签署请求
(3)CA签证
[root@centos7 ssl]# openssl ca -in httpd.csr -out /etc/httpd/ssl/httpd.crt -days 365 4.配置httpd支持ssl5.客户端验证
http自带应用程序 htpasswd:basic认证基于文件实现,用于生成账号和密码的程序; -c:自动创建此处指定的文件,因此,仅应该在此文件不存在时使用 -m:md5格式加密 -s:sha格式加密 -D:删除指定用户 apachectl:httpd自带的服务控制脚本,支持start和stop等子命令; apxs:- APache eXtenSion tool 为httpd增添模块的; rotatelogs:日志切割 access_log, access_log, access_log.1, ... ab - web service的压力测试工具 ab [OPTIONS] [http[s]://]hostname[:port]/path 请求数:[ -n requests ] 并发数:[ -c concurrency ] 长连接:[ -k ]