一:https的概念
HTTPS简介:
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket
Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版本。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
它是一个URL scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口(https是443端口)及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
HTTPS和HTTP的区别:
<1>https协议需要到ca申请证书,一般免费证书很少,需要交费。
<2>http是超文本传输协议,信息是明文传输,https
则是具有安全性的ssl加密传输协议。
<3>http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
<4>http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
二:https
<1>实现https并对其进行加密
问题:我们去访问https:172.25.254.115访问不到
实验如下:
实现https
第一步:
yum install mod_ssl -y 安装ssl插件,使其可以访问https(如果不安装,在网址中输入https会出现报错)
第二步:
systemctl restart httpd
第三步:
firewall-cmd --list-all
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
测试:然后在浏览器https:172.25.254.106让你添加证书(证书相当于加密key的标签),证书添加之后可以访问到
这个证书不安全,所以我们需要自己去实现一个加密key,将原本的证书信息删除,因为浏览器会缓存。
在浏览器右上角选择下图所示
在选择perferences会出现以下界面
进行加密
第一步:安装加密key安装包
yum install crypto-utils -y 自主提供加密key,安装crypto-utils插件,使其可以出现设置加密key的图形
第二步:进行key加密
cd /etc/httpd/conf.d
genkey apache.westos.com 在子配置目录下生成加密文件
这是加密完成的界面:
在输入 genkey apache.westos.com 命令后会出现以下界面
cd /etc/httpd/conf.d/
vim /etc/httpd/conf.d/ssl.conf 将锁和证书换成自己设定的
SSLCertificateFile /etc/pki/tls/certs/apache.westos.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/apache.westos.com.key
将锁和证书换成自己设定的
systemctl restart httpd
测试:然后在浏览器https:172.25.254.106让你添加证书,添加之后可以访问到,查看证书的信息,是自己设定的
<2>设置https虚拟主机并设定网页重写
在我们的日常生活中,我们在浏览器输入网址的时候,比如:www.baidu.com它自己会切换到https://www.baidu.com,而我们现在还必须手动在网址面前输入https:为了使其自动为所有网址加上https,需要进行以下操作:
实验如下:
为了实验效果明显,我们设置https的虚拟主机,并在浏览器输入网址一栏输入这个虚拟主机的域名时候,看能否自动转化。
第一步:编辑子配置文件
cd /etc/httpd/conf.d
vim meng_https.conf 在里面写入
https的默认端口是443
ServerName login.westos.com
DocumentRoot /var/www/meng/login
Customlog logs/login.log combined
SSLEngine on 开启加密认证
SSLCertificateFile /etc/pki/tls/certs/apache.westos.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/apache.westos.com.key
Require all granted
将在80端口浏览器输入的字符前强制加入https
ServerName login.westos.com
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
注意:
^(/.*)$ 客户在浏览器地址栏中输入的所有字符
https:// 强制客户加密访问
%{HTTP_HOST} 客户请求主机
1 表 示 ( / . ∗ ) 1表示^(/.*) 1表示(/.∗) 的值
[redirect=301] 永久重写,302是临时的
第二步:建立默认发布目录及文件
mkdir -p /var/www/meng/login
vim /var/www/meng/login/index.html
systemctl restart httpd
vim /etc/hosts
172.25.254.115 login.westos.com
测试:在浏览器输入login.westos.com看是否能转换为https:login.westos.com