1.HTTPS
1.HTTPS简介:
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
2.HTTPS和HTTP的区别
<1>https协议需要到ca申请证书,一般免费证书很少,需要交费。
<2>http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
<3>http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
<4>http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
实验
-1-https的实现
<1>首先安装ssl插件,使其可以访问https(如果不安装,在网址中输入https会出现报错)
[root@dns-server Desktop]# yum install mod_ssl -y
<2>查看子配置目录下是否有ssl.conf文件
[root@dns-server conf.d]# ls
<3>重启服务
[root@dns-server conf.d]# systemctl restart httpd
<4>在浏览器中输入https加本机ip,会发现不会报错,但是会出现提示
<5>按照如下依次进行选择,获得加密key
<6>当再次输入网址时(刷新也可),会成功进入,且https前方会自动多一个锁的形状
<7>点击锁,选择more information ,会发现这个加密key并不安全(因为证书等都是别人提供的,并不是自己私有的)
输入网址但不刷新:
刷新后:
点击锁:
选择Security
可以查看到证书的相关信息
<8>删除加密key,即证书,在浏览器中选择preference,并按照以下操作进行选择
删除后进行查看,发现已经删除
-2-自主提供加密key
<1>安装crypto-utils插件,使其可以出现设置加密key的图形
[root@dns-server Desktop]# yum install crypto-utils -y
<2>在子配置目录下生成加密文件
[root@dns-server Desktop]# genkey www.westos.com
<3>执行genkey命令后,我们要在图形中操作以获取证书(可以使用tab键),按照下面操作即可
图一:选择Next
图二:选择1024和Next
图三:正在创建随机数,可以在别的虚拟机中敲入字符使其加快速度获取随机数
图四:选择No
图五:选择Next,不要选择Encrypt the private key(否则每次重启获取证书时都需要输入密码)
图六:填写证书的信息
<4>证书获取成功后,查看生成的加密key的信息
<5>进入子配置目录下的ssl.conf文件并将生成的加密key的信息写入(之前的最好不要删除,避免影响以后的操作),并重启服务
[root@dns-server conf.d]# vim ssl.conf
[root@dns-server conf.d]# systemctl restart httpd
文件内更改的信息如下(添加以下信息,并将之前的信息注释掉):
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
<6>打开浏览器输入网址重新获取加密key,会发现还是之前的,这是因为浏览器的缓存问题,删除缓存即可
<7>重新输入网址并获取加密key
<8>点击锁,选择more information ,会发现这个加密key安全,其证书都已变成了自己设置的信息
注意:
1.登陆账号的时候需要证书,指所有生成加密key,是为了保证用户数据在互联网中不会被泄露
2.443是加密端口
2.网页加密访问https
为了使其自动为所有网址加上https,需要进行加密
<1>打开浏览器,输入一个网址,会发现只有在域名前输入https://才可以转换到加密访问的方式
输入一个网址:
在域名前输入https://;
<2>进入共享目录后在westos.com下创建一个login(输入网址时是login.westos.com)
[root@dns-server ~]# cd /var/www/virtual
[root@dns-server virtual]# ls
[root@dns-server virtual]# mkdir westos.com/login
[root@dns-server virtual]# cd westos.com/login
<3>编辑index.html并显示其内容
[root@dns-server login]# vim index.html
[root@dns-server login]# cat index.html
<4>进入子配置目录中并将配置文件music.conf的内容复制到login.conf中
[root@dns-server login]# cd /etc/httpd/conf.d
[root@dns-server conf.d]# ls
[root@dns-server conf.d]# cp -p music.conf login.conf
<5>编辑login.conf中的文件并使服务生效
[root@dns-server conf.d]# vim login.conf
[root@dns-server conf.d]# systemctl restart httpd
文件中的内容如下:
<VirtualHost *:443> ##443是加密端口
ServerName "login.westos.com"
DocumentRoot "/var/www/virtual/westos.com/login"
CustomLog logs/login.log combined
SSLEngine on ##开始https功能呢个
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key ##密钥
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt ##证书
</VirtualHost>
<Directory "/var/www/virtual/westos.com/login">
Require all granted
</Directory>
<VirtualHost *:80> ##网页重写实现自动访问https
ServerName login.westos.com
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301] ##301表示永久重定向
</VirtualHost>
<6>再次打开浏览器,会发现访问 http://login.westos.com 会自动跳转到
https://login.westos.com 实现网页数据加密传输
注意:
1.如果以上步骤都对但依旧无法访问,其原因可能是因为文件首字母影响了访问的顺序的问题,按照以下命令修改即可
[root@dns-server conf.d]# mv login.conf z_login.conf
[root@dns-server conf.d]# systemctl restart httpd
2.http(超文本传输协议)和https(对这种协议进行加密)生成公钥和锁
3.自动的将普通访问自动转换成加密方式的访问
4.^(/.)$ https://%{HTTP_HOST}
1
[
r
e
d
i
r
e
c
t
=
301
]
5
.
(
/
.
∗
)
1 [redirect=301] 5.^(/.*)
1[redirect=301]5.(/.∗) 客户主机在地址栏中写入的所有字符,不包含换行符
6.https:// 定向成为的访问协议
7.%{HTTP_HOST} 客户请求主机
8.$1
1
的
值
就
表
示
(
/
.
∗
)
1的值就表示^(/.*)
1的值就表示(/.∗)的值
[redirect=301] 临时重定向 302永久重定向*