HTTPS
(
HyperText Transfer Protocol Secure
)是一种用于安全传输超文本的通信协议。它是
HTT协议的安全版本,通过在
HTTP
和
TCP
之间添加
SSL/TLS
加密层,确保传输过程中的数据安全性和完
整性。
HTTPS 的工作原理
1.
建立安全连接
:客户端(通常是浏览器)向服务器发起
HTTPS
请求时,服务器会返回自己的数字
证书,证明自己的身份。客户端会验证证书的合法性,如果证书有效且可信,则客户端生成一个随
机数作为会话密钥,并使用服务器的公钥加密该密钥,然后将加密后的密钥发送给服务器。
2.
加密数据传输
:一旦建立了安全连接,客户端和服务器之间的通信数据将被加密。客户端和服务器
使用会话密钥进行对称加密和解密,确保数据在传输过程中不被窃听和篡改。
3.
验证服务器身份
:客户端通过验证服务器的数字证书来确认服务器的身份。如果证书有效且可信,
客户端才会与服务器建立连接。这样可以防止中间人攻击,确保客户端与服务器直接通信。
涉及文件
1.
数字证书(
SSL
证书)
:
- 服务器证书:用于证明服务器身份的数字证书。通常是由权威的证书颁发机构(CA,Certificate Authority)签发的,用于证明服务器的合法性。
- 客户端证书(可选):用于证明客户端身份的数字证书。在某些情况下,服务器可能需要客户端提供证书以验证客户端身份。
2.
私钥文件
:
服务器私钥:与服务器证书配对的私钥文件,用于对通信数据进行加密和解密。私钥应该妥善保管,只有服务器拥有私钥,确保数据的安全性。
这些文件在
HTTPS
通信过程中发挥着重要的作用:
- 服务器证书用于证明服务器身份,客户端在建立连接时会验证服务器的证书。
- 服务器私钥用于对通信数据进行加密和解密,确保数据的安全性。
- 客户端证书(可选)用于证明客户端身份,某些情况下可能需要客户端提供证书以进行身份验证。
配置HTTPS 步骤
1.
获取
SSL
证书
:
要启用
HTTPS
,首先需要获取
SSL
证书。可以通过权威的证书颁发机构(
CA
)购买证书,也
可以使用免费的证书颁发机构(如
Let's Encrypt
)来获取证书。
2.
安装
SSL
证书
:
将获取到的
SSL
证书和私钥文件上传到服务器上,通常存放在安全的目录中,比如
/etc/ssl/certs/
和
/etc/ssl/private/
。
3.
配置
Web
服务器
:
对于
Apache
服务器,需要在虚拟主机配置文件中启用
SSL
模块,并指定
SSL
证书和私钥的
路径。
4.
重启
Web
服务器
:
配置完成后,需要重启
Web
服务器以使配置生效。对于
Apache
,可以使用命令
sudo
systemctl restart httpd
;
5.
测试
HTTPS
连接
:
在浏览器中输入网站地址,确保可以通过
HTTPS
连接到网站。浏览器将显示安全锁图标以表
示连接是安全的
本次试验中处于,经济实惠的考虑没有使用
CA
或者
Let's encrypt
申请的证书,自己创建一个证书也叫自签证书。因为是自签证书,虽然连接是安全的,但是浏览器并不认可。
实验过程
前提:
1.
之前已经完成
httpd
软件的安装
2.
使用备份的配置文件,还原设置
# 先安装生成证书以及密码需要的工具
[root@bogon ~]# yum -y install openssl openssl-devel
[root@webserver ~]# openssl req -x509 -newkey rsa:4096 -keyout key.pem -outcert.pem -days 365
前两个框是密码 大于
4
个字符即可
后面的框输入的依次是国家、省份、市、公司名称、部门、主机名
复制生成的秘钥文件
[root@webserver ~]# cp /root/cert.pem /etc/pki/tls/certs/
[root@webserver ~]# cp /root/key.pem /etc/pki/tls/private/
[root@webserver ~]# ll /etc/pki/tls/certs/cert.pem
-rw-r--r--. 1 root root 1980 Apr 21 06:45 /etc/pki/tls/certs/cert.pem
[root@webserver ~]# ll /etc/pki/tls/private/key.pem
-rw-------. 1 root root 3414 Apr 21 06:45 /etc/pki/tls/private/key.pem
# 安装httpd安全加密通信模块,在安装过程中,会释放一个默认的SSL配置文件,我们需要修改这个
配置文件的秘钥和证书文件的路径
[root@bogon keys]# yum -y install mod_ssl
[root@bogon keys]# vim /etc/httpd/conf.d/ssl.conf
# 修改这两行即可
重启服务时,需要输入一些私钥的口令
确定端口监听关系
访问测试
最后访问之前设置的默认界面
检查rewrite模块是否启用
[root@bogon ~]# vim /etc/httpd/conf.modules.d/00-base.conf
LoadModule rewrite_module modules/mod_rewrite.so //确保有这一行即可
[root@bogon ~]# vim /var/www/html/.htaccess //文件根目录下面的.htaccess
RewriteEngine on // 对于这个文件根目录的访问启用重写
RewriteCond %{SERVER_PORT} !^443 //对于客户端访问的重写条件
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R] // 重写用户访问的规则
[root@bogon ~]# systemctl restart httpd
测试前保证,需要的防火墙规则以及
selinux
策略不会干扰访问
设置重写规则后,默认状态码为
302
,切换到浏览器属于
IP
地址,自动跳转到
https://ip
地址