1. apache的加密访问
(1).http简介
http: 超文本传输协议,使用TCP端口80,默认情况下数据是明文传送的,数据可以通过抓
包工具捕获到,因此在interner上,有些比较重要的站点的http服务器需要使用PKI(公钥基
础结构)技术来对数据加密!这也就是https了;
(2).https简介
https: 安全的超文本传输协议,使用TCP端口443,他的数据会用PKI中的公钥进行加密,这
样抓包工具捕获到的数据包也没有办法看包中的内容,安全性大大提高,要解密数据的话就要
用到PKI中的私钥。所以一些安全性比较高的网站如:网上银行,电子商务网站都需要用https访问!
(3).http与https区别
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
(4).为什么要加密访问?
这是因为加密后访问更加安全,很多网站的访问都是加密访问
比如访问百度时,输入网址 www.baidu.com(实质上是 http://www.baidu.com)
会自动跳转到 https://www.baidu.com
那么如何让访问apahce也变成加密访问呢?
1).利用系统自动生成的证书加密apache
未加密apahce时,不能访问https
(1).安装ssl
##安装ssl
[root@apache-server ~]# yum install -y mod_ssl
[root@apache-server ~]# cd /etc/httpd/conf.d/
##ssl.conf为ssl服务的主配置文件
[root@apache-server conf.d]# ls
(2).重启apache
[root@apache-server conf.d]# systemctl restart httpd
(3).网页测试
输入: https://172.25.254.134
这是当你访问apache时,系统自动生成证书。
那么如何制作自己的证书呢?
2).利用自己制作的证书实现apache的加密访问
(1).先删除系统生成的证书
重新输入 https://172.25.254.134 检测证书是否被成功删除
(2).安装crypto-utils
[root@apache-server ~]# yum install -y crypto-utils -y
(3).制作证书和key
[root@apache-server ~]# genkey www.westos.com
此时加载数据条会卡住,这需要打开虚拟机shell,一直敲击键盘生成加密字符,直到加载数据完毕!
(4).关联证书和key
[root@apache-server ~]# cd /etc/httpd/conf.d/
[root@apache-server conf.d]# ls
a_default.conf http_userlist music.conf php.conf ssl.conf welcome.conf
autoindex.conf manual.conf news.conf README userdir.conf
##将自己制作的证书和key写入到ssl服务的主配置文件中
[root@apache-server conf.d]# vim ssl.conf
############################
100 #SSLCertificateFile /etc/pki/tls/certs/localhost.crt
101 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt ##证书
108 #SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
109 SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key ##钥匙(key)
(5)重启apache
[root@apache-server conf.d]# systemctl restart httpd
(6).网页测试
输入: https://172.25.254.134
虽然已经实现了apache的加密访问,但在网页上必须输入 https://172.25.254.134 强制加密访问。
那如果想要实现直接输入ip便能自动跳转到https加密,该如何操作呢?
2.构建https虚拟主机并设定网页重写(http—>https)
(1)构建虚拟主机(编写发布目录)
##1.创建发布目录
[root@apache-server ~]# cd /var/www/westos.com/
[root@apache-server westos.com]# ls
music news
##-p 表示递归
[root@apache-server westos.com]# mkdir -p login/html
[root@apache-server westos.com]# cd login/html
[root@apache-server html]# pwd
/var/www/westos.com/login/html
##2.编写发布文件
[root@apache-server html]# vim index.html
##########################
<h1>login's page</h1>
##3.编写子配置文件
[root@apache-server html]# cd /etc/httpd/conf.d/
[root@apache-server conf.d]# ls
a_default.conf http_userlist music.conf php.conf ssl.conf welcome.conf
autoindex.conf manual.conf news.conf README userdir.conf
[root@apache-server conf.d]# cp news.conf login.conf
[root@apache-server conf.d]# vim login.conf
##4.重启apache
[root@apache-server conf.d]# systemctl restart httpd
##5.本地解析
[root@foundation34 ~]# vim /etc/hosts
######################
172.25.254.134 login.westos.com
网页测试:
(2).网页重写
##1.编写子配置文件
[root@apache-server conf.d]# pwd
/etc/httpd/conf.d
[root@apache-server conf.d]# vim login.conf
#########################
1 <VirtualHost *:443> ## https的端口为443
5 SSLEngine on ##开启ssl
6 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt ##指定证书
7 SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key ##指定钥匙(key)
14 <VirtualHost *:80> ## http的端口为80
15 ServerName login.westos.com ##设定访问域名
16 RewriteEngine on ##开启
17 RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
18 </VirtualHost>
注释:
^(/.*)$ ##表示客户端在浏览器地址栏中输入的所有字符
https:// ##强制客户加密访问
%{HTTP_HOST} ##客户请求主机
$1 ##表示^(/.*)$的值
[redirect=301] ##永久重写;302是临时转换
当访问80端口时,自动跳转到443端口上(http---->https)
##2.重启apache
[root@apache-server conf.d]# systemctl restart httpd
网页测试:
先确保已经添加了自己制作的证书
输入 login.westos.com 会自动跳转到 https://login.westos.com