https

为什么要使用https

http使用的是明文传输,在传输敏感交易信息时不安全。(交易信息、账号密码、银行卡号……)别人会通过监听来获取到我们的这些信息。
https在数据传输过程中是加密的,能够有效避免网站传输时信息的泄露。

什么是https

现在很多公司都是使用https来实现站点数据传输的安全的。早期由网景公司涉及了ssl安全套接层协议、TLS协议、传输层安全协议。

TLS协议是如何实现铭文信息被加密

TLS与SSL在传输层与应用层之间对网络连接进行加密。

  1. 提供数据安全,爆炸数据尽可能不被泄露。
  2. 提供数据的完整性,爆炸数据在传输的过程中,不会被修改或者篡改数据。
  3. 对应用层交给传输层的数据进行加密与解密。

https加密模型

对称机构:相同的密钥
非对称加密:一对密钥,公钥加密,私钥解密

CA机构:可信任的组织机构,主要用来颁发证书。
CA机构证书颁发过程:
在这里插入图片描述

https的传输过程

在这里插入图片描述

证书类型

DV:域名型,实现简单的https加密需求,个人站点和应用
OV:企业型,电子商务类,企业中使用
EV:增强型,

证书购买

证书是捆绑域名的:
保护一个域名:www.wenjie.com
保护多个域名:www.wenjie.com
只能保护列出的多个域名
通配符域名:*.wenjie.com
能保护所有通配符能够匹配的域名

证书注意事项

绿色:安全传输
红色:表示证书过期或者证书不受信任
黄色:表示该https中包含了http协议

https配置

1. 模拟生成证书
[root@web01 ~]# mkdir /etc/nginx/ssl_key
[root@web01 ~]# cd /etc/nginx/ssl_key
[root@web01 ssl_key]# openssl genrsa -idea -out server.key 2048
	
	#密码1234

[root@web01 ssl_key]# openssl req -days 36500 -x509 \
-sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt

.....自己随意填写


	2.在Nginx中配置证书
[root@web01 ssl_key]# cat  /etc/nginx/conf.d/s.wenjie.com.conf
server {
	listen 443 ssl;
	server_name s.wenjie.com;
	root  /code;

	ssl_certificate  ssl_key/server.crt;
	ssl_certificate_key ssl_key/server.key;
	ssl_protocols TLSv1.2;
	location / {
		index index.html;
	}
}

	3.访问,请带上https


	4.如果希望http访问,强制转到https


[root@web01 ssl_key]# cat /etc/nginx/conf.d/s.wenjie.com.conf

#当有用户请求http://s.wenjie.com 则强制跳转为https协议。
server {
	listen 80;
	server_name s.wenjie.com;
	return 302 https://$server_name$request_uri;
}


server {
	listen 443 ssl;
	server_name s.wenjie.com;
	root  /code;

	ssl_certificate  ssl_key/server.crt;
	ssl_certificate_key ssl_key/server.key;
	ssl_protocols TLSv1.2;

	location / {
		index index.html;
	}
}

集群实现https

[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_s.wenjie.com.conf

upstream http {
	server 172.16.1.7:80;
	server 172.16.1.8:80;
}

server {
	listen 80;
	server_name s.wenjie.com;

	location / {
		proxy_pass http://http;
		include proxy_params;
	}
}
[root@lb01 ~]# systemctl reload nginx


2.改造http为https协议


[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_s.wenjie.com.conf

upstream http {
	server 172.16.1.7:80;
	server 172.16.1.8:80;
}

	#2.用户请求https协议,贼通过负载均衡方式请求资源池,使用的是http协议
server {
	listen 443 ssl;
	server_name s.wenjie.com;
	ssl_certificate ssl_key/server.crt;
	ssl_certificate_key ssl_key/server.key;

	location / {
		proxy_pass http://http;
		include proxy_params;
	}
}

	#1.用户请求http协议,强制跳转至https协议
server {
	listen 80;
	server_name s.wenjie.com;
	return 302 https://$server_name$request_uri;
}

改造wordpress网站为https

只需要在修改负载均衡服务器上的nginx配置文件的server层添加如下内容:

	ssl_certificate ssl_key/server.crt;					
	ssl_certificate_key ssl_key/server.key;

然后新建一个server层,在其中实现强制跳转http为https,内容如下:

server {
	listen 80;
	server_name s.wenjie.com;
	return 302 https://$server_name$request_uri;
}

这个时候我们会发现我们的网站的格式会丢失,这时候我们只需要在我们的web服务器的nginx相应的配置文件的server层中添加
fastcgi_param HTTPS on;
即可。
ssl_session_cache; 配置共享会话缓存大小
ssl_session_timeout; 配置共享会话超时时间
keepalive_timeout 70; 设置长链接

配置优化https:

减少 CPU 运算量
SSL的运行计算需要消耗额外的 CPU 资源,SSL通讯过程中『握手』阶段的运算最占用 CPU 资源,有两个方法可以减少每台客户端的运算量:

1.激活 keepalive 长连接,一个连接发送更多个请求
2.复用 SSL 会话参数,在并行并发的连接数中避免进行多次 SSL『握手』

例子如下所示:

server {
    listen              443 ssl;
    server_name         www.example.com;
    
keepalive_timeout   70;				#设置长连接
    ssl_certificate     www.example.com.crt;
    ssl_certificate_key www.example.com.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
	ssl_session_cache   shared:SSL:10m;		 #配置共享会话缓存大小 (1M缓存空间能存储 4000 个会话数量 )
	ssl_session_timeout 10m;			 #配置会话超时时间
}

模拟银行场景:

1.主页http协议			http://yh.wenjie.com			(提供网页浏览)
2.模拟登陆			http://yh.wenjie.com/login		(相当于点击了登陆按钮)
3.新域名下,使用的是https协议。	https://star.wenjie.com  		(提供安全登陆)

1.配置 https://star.wenjie.com
[root@web01 ~]# cat /etc/nginx/conf.d/star.wenjie.com.conf
server {
listen 443 ssl;
server_name start.wenjie.com;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;

root  /code/login;
location / {
	index index.html;
}

}
[root@web01 ~]# mkdir /code/login -p
[root@web01 ~]# echo “login…https” > /code/login/index.html

2.配置 http://yh.wenjie.com
[root@web01 ~]# cat /etc/nginx/conf.d/yh.wenjie.com.conf
server {
listen 80;
server_name yh.wenjie.com;
root /code;

location / {
	index index.html;
}

location /login {
	return 302 https://start.wenjie.com;
}

}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值