https的实现
1)CA服务器端,生成自签证书
[root@ca ~]# cd /etc/pki/CA/
[root@ca CA]# (umask 077; openssl genrsa -out private/cakey.pem 2048)
[root@ca CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
[root@ca CA]# touch index.txt
[root@ca CA]# echo 01 > serial
2)HTTP服务器端,生成签署请求
[root@www ~]# mkdir /etc/httpd/conf.d/ssl
[root@www ~]# cd /etc/httpd/conf.d/ssl
[root@www ssl]# (umask 077; openssl genrsa -out httpd.key 1024)
[root@www ssl]# openssl req -new -key httpd.key -out httpd.csr
[root@www ssl]# scp httpd.csr 192.168.0.2:/etc/pki/CA/
3)CA服务器端,签署
[root@ca CA]# openssl ca -in httpd.csr -out certs/httpd.crt -days 350
[root@ca CA]# scp certs/httpd.crt cacert.pem 192.168.0.7:/etc/httpd/conf.d/ssl/
4)HTTP服务器端,配置https
[root@www ssl]# ls -1
cacert.pem
httpd.crt
httpd.csr
httpd.key
[root@www ~]# yum install mod_ssl -y
[root@www ~]# vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/httpd/conf.d/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/httpd.key
SSLCACertificateFile /etc/httpd/conf.d/ssl/cacert.pem
测试访问:https://192.168.0.7
,导入根证书即可信任此网站
5)配置http重定向到https,将http请求转发至https的URL:俩种实现方式,推荐使用HSTS
Redirect [status] URL-PATH URL 这种方法不适合,会反复重定向
HSTS:HTTP Strict Transport Security
服务器端配置支持HSTS后,会在给浏览器返回的HTTP首部中携带HSTS字段。浏览器获取到该信息后,会将所有HTTP访问请求在内部做307跳转到HTTPS。而无需任何网络过程
HSTS preload list:Chrome浏览器中的HSTS预载入列表,在该列表中的网站,使用Chrome浏览器访问时,会自动转换成HTTPS。Firefox、Safari、Edge浏览器也会采用这个列表
[root@www ~]# vim /etc/httpd/conf.d/myhttpd.conf
Header always set Strict-Transport-Security "max-age=31536000"
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=302]
测试访问http://
会自动跳转到https://
http的反向代理功能
不推荐使用
启用反向代理:
- ProxyPass "/" "http://www.example.com/"
- ProxyPassReverse "/" "http://www.example.com/"
特定URL反向代理:
ProxyPass "/images" "http://www.example.com/"
ProxyPassReverse "/images" "http://www.example.com/"
~]# vim /etc/httpd/conf.d/myhttpd.conf ProxyPass "/" "http://192.168.0.7/" ProxyPassReverse "/" "http://192.168.0.7/"
web相关工具
1、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...]
选项:
- -A string 设置用户代理(浏览器)发送给服务器
- -e URL 伪装来源网站
- --cacert file 指定使用ca证书
- -k 允许忽略证书进行 SSL 连接
- --compressed 要求返回是压缩的格式
- -H 自定义首部信息传递给服务器
- -i 显示页面内容,包括报文首部信息
- -I 只显示响应报文首部信息
- -D file 将url的header信息存放在指定文件中
- --basic 使用HTTP基本认证
- -u user:password 设置服务器的用户和密码
- -L 如果有3xx响应码,重新发请求到新位置
- -O 使用URL中默认的文件名保存文件到本地
- -o file 将网络文件保存为指定的文件中
- --limit-rate 限制传输速度
- -0 数字0,使用HTTP/1.0协议
- -v 显示详细信息
- -C 选项可对文件使用断点续传功能
- -c 将url中cookie存放在指定文件中
- -x proxyhost:port 指定代理服务器地址
- -X COMMAND 向服务器发送指定请求方法
- -U user:password 代理服务器用户和密码
- -T 选项可将指定的本地文件上传到FTP服务器上
- -d 方式指定使用POST方式传递数据
- -b name=data 从服务器响应set-cookie得到值,返回给服务器
2、htpasswd
basic认证基于文件实现时,用到的账号密码文件生成工具
用法:htpasswd [options] /PATH/HTTPD_PASSWD_FILE username
-c:自动创建文件,仅应该在文件不存在时使用
-p:明文密码
-d:CRYPT格式加密,默认
-m:md5格式加密
-s: sha格式加密
-D:删除指定用户
htpasswd -mc /etc/httpd/conf.d/.htuser admin
3、apachectl
httpd自带的服务控制脚本,支持start、stop和restart等选项
4、rotatelogs:
日志滚动工具
5、ab命令
httpd的压力测试工具,来自httpd-tools包
用法:ab [options] URL
- -n:总请求数
- -c:模拟并发数
- -k:以持久连接模式测试