linux中Apache服务之https超文本传输安全协议
1、https 超文本传输安全协议
- 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。
- 为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
yum install mod_ssl.x86_64 -y
#安装ssl模块ls /etc/httpd/conf.d/
#模块安装成功之后自动生成ssl.conf文件在子配置目录中systemctl restart httpd
#重启服务netstat -antlupe |grep http
#查看httpd服务需要的端口firewall-cmd --permanent --add-port=443/tcp
#在防火墙中添加该端口firewall-cmd --reload
#重新加载防火墙配置
生成认证文件:yum install crypto-utils.x86_64 -y
#安装提供生成认证文件的工具genkey www.toto.com
#使用工具提供的命令genkey 生成认证
执行之后按照以下步骤选择相关选项
这里需要稍等一会
敲击键盘随机获取加密字符
只为实验,选择不发送给CA进行认证编写证书信息
完成后可查看到生成了认证文件:
vim /etc/httpd/conf.d/ssl.conf
101 SSLCertificateFile /etc/pki/tls/certs/www.toto.com.crt #指定认证文件
109 SSLCertificateKeyFile /etc/pki/tls/private/www.toto.com.key
systemctl restart httpd
#重启服务
查看效果:访问测试 https://www.toto.com 查看是否生成专属认证
2、设定https虚拟主机并设定网页重写
vim /etc/httpd/conf.d/login.conf
#在副配置目录中编写配置文件
<VirtualHost *:443> #443端口的虚拟主机
ServerName login.toto.com #指定的的服务名称
DocumentRoot /virtdir/login/html #默认发布目录
SSLEngine on #安全认证功能开启
SSLCertificateFile /etc/pki/tls/certs/www.toto.com.crt #认证文件
SSLCertificateKeyFile /etc/pki/tls/private/www.toto.com.key #认证钥匙文件
<VirtualHOst *:80> #80端口的虚拟主机
ServerName login.toto.com #指定服务名称
RewriteEngine on #网页重写功能开启
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301] #设定重写规则
</VirtualHost>
systemctl restart httpd
#重新启动服务
^(/.*)$
#客户在浏览器地址中输入的所有字符https://
#强制客户加密访问%{HTTP_HOST}
#客户请求主机$1
#“1”表示(/.*)的值[redirect=301]
#永久转换301;临时重写 302
创建虚拟主机发布目录以及发布文件
测试端对在本地解析文件中对 login.toto.com 进行解析
使用 login.toto.com 进行访问 会自动重写成 https://login.toto.com/
第一次需要添加证书