默认情况下,Apache 使⽤未加密的 HTTP 连接向客⼾端提供内容。
一、https简介
超⽂本传输协议HTTP协议被⽤于在Web浏览器和⽹站服务器之间传递信息。HTTP协议以明 ⽂⽅式发送内容,不提供任何⽅式的数据加密,如果攻击者截取了Web浏览器和⽹站服务器 之间的传输报⽂,就可以直接读懂其中的信息,因此HTTP协议不适合传输⼀些敏感信息,⽐ 如信⽤卡号、密码等。为了解决HTTP协议的这⼀缺陷,需要使⽤另⼀种协议:安全套接字层 超⽂本传输协议HTTPS。 HTTPS ( 全 称 : Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超⽂本传输安全协议),是以安全为⽬标的HTTP通道。HTTPS并 不是⼀个新协议,⽽是HTTP+SSL(TLS)。原本HTTP先和TCP(假定传输层是TCP协议)直 接通信,⽽加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在 了HTTP和TCP之间。
SSL 是“Secure Sockets Layer”的缩写,中⽂叫做“安全套接层”。它是在上世纪90年代中 期,由⽹景公司设计的。到了1999年,SSL 应⽤⼴泛,已经成为互联⽹上的事实标准。IETF 就把SSL 标准化。标准化之后SSL被改为 TLS(Transport Layer Security传输层安全协议)。
SSL协议分为两层: SSL记录协议 (SSL Record Protocol):它建⽴在可靠的传输协议(如TCP)之上,为 ⾼层协议提供数据封装、压缩、加密等基本功能。 SSL握⼿协议(SSL Handshake Protocol):它建⽴在SSL记录协议之上,⽤于在实际 的数据传输开始前,通讯双⽅进⾏⾝份认证、协商加密算法、交换加密密钥等。 SSL协议提供的服务: 1)认证⽤⼾和服务器,确保数据发送到正确的客⼾机和服务器 2)加密数据以防⽌数据中途被窃取 3)维护数据的完整性,确保数据在传输过程中不被改变
二、实现步骤
1、安装mod_ssl
cd /etc/httpd/conf.d/
dnf install mod_ssl -y
使用ll命令发现多了ssl.conf
vim ssl.conf进入配置文件查看
SSLCertificateFile /etc/pki/tls/certs/localhost.crt 认证文件
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key 密钥文件
2、重启httpd服务
systemctl restart httpd
查看监听:netstat -lntup | grep httpd
发现多了一个443端口
3、通过openssl工具生成钥匙,再通过钥匙生成证书
openssl genrsa > jiami.key
openssl req -utf8 -new -key jiami.key -x509 -days 100 -out jiami.crt
cd /etc/pki/tls/certs/
pki公钥基础设施
使用ll可以看到这里面有一个默认的证书localhost.crt
ll ../private查看上一级的/private目录可以看到有一个localhost.key密钥
mv jiami.key ../private/
cd - 返回到刚才的目录
修改ssl.conf:
vim ssl.conf
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
修改为:SSLCertificateFile /etc/pki/tls/certs/jiami.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
修改为:SSLCertificateKeyFile /etc/pki/tls/private/jiami.key
4、重启httpd服务
systemctl restart httpd
5、验证结果
6、配置vhost.conf文件
vim /etc/httpd/conf.d/vhost.conf
把ssl.conf文件中的以下内容,添加到vhost.conf中:
SSLCertificateFile /etc/pki/tls/certs/jiami.crt
SSLCertificateKeyFile /etc/pki/tls/private/jiami.key
SSLEngine on
端口号要修改为443
修改后如下:
<directory /usr/local/mysecret>
authtype basic
authname "请输入密码:"
authuserfile /etc/httpd/zhanghao
require user abc tom
</directory>
<virtualhost 192.168.229.135:443>
SSLEngine on SSLCertificateFile /etc/pki/tls/certs/jiami.crt
SSLCertificateKeyFile /etc/pki/tls/private/jiami.key
documentroot /www/hehe
alias /hehe /usr/local/mysecret
servername www.hehe.com
</virtualhost>
创建所需的目录
mkdir /usr/local/mysecret/
往目录中写内容
echo This is mysecret > /usr/local/mysecret/index.html
cd /www/
mkdir hehe
echo hehe >hehe/index.html
在本地解析文件中添加以下内容:
vim /etc/hosts
192.168.229.135 www.hehe.com
添加用户
htpasswd -c /etc/httpd/zhanghao abc
htpasswd /etc/httpd/zhanghao tom
配置windows中的本地解析文件hosts
C:\Windows\System32\drivers\etc
添加以下内容: 192.168.229.135 www.hehe.com
7、重启服务,关闭防火墙和SELniux
systemctl restart httpd
systemctl stop firewalld.service
setenforce 0