【愚公系列】2022年04月 .NET架构班 032-分布式中间件 Nginx多场景使用问题分析之HTTPS
【摘要】 前言 1.HTTPS介绍HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HT...
前言
1.HTTPS介绍
HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。
2.HTTPS设计目标
HTTPS 协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。设计目标主要有三个。
数据保密性:
保证数据内容在传输的过程中不会被第三方查看。就像快递员传递包裹一样,都进行了封装,别人无法获知里面装了什么。数据完整性:
及时发现被第三方篡改的传输内容。就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收。身份校验安全性:
保证数据到达用户期望的目的地。就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方,通过身份校验来确保送对了地方。
一、Https应用场景
1.证书生成
1.1 使用openSSL工具生成
下载openSSL地址:http://slproweb.com/download/Win64OpenSSL-3_0_1.msi
证书生成j教程地址:https://jingyan.baidu.com/article/6c67b1d6be538c2787bb1e06.html
2.Nginx配置HTTPS
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
proxy_cache_path /cache/nginx/ levels=1:2 keys_zone=mycache:64m;
limit_conn_zone $server_name zone=perserver:10m;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
limit_conn perserver 1;
proxy_cache mycache;
proxy_pass http://XT.EBusiness;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache_methods GET HEAD;
proxy_cache_revalidate on;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_cache_valid any 1m;
proxy_cache_min_uses 1;
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# https 虚拟主机
server {
listen 4435 ssl;
server_name localhost;
ssl_certificate D:/work/net/grpc-cluster/server-cert.pem;
ssl_certificate_key D:/work/net/grpc-cluster/server-key.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
location / {
proxy_pass http://YDT.EBusiness;
}
}
}
#动态负载均衡配置
upstream XT.EBusiness{
ip_hash;
server localhost:5001 max_fails=2 fail_timeout=10s;
server localhost:5002 max_fails=2 fail_timeout=10s;
server localhost:5003 backup;
}
}
3.Nginx配置HTTP转发HTTPS
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
proxy_cache_path /cache/nginx/ levels=1:2 keys_zone=mycache:64m;
limit_conn_zone $server_name zone=perserver:10m;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
limit_conn perserver 1;
proxy_cache mycache;
proxy_pass http://XT.EBusiness;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache_methods GET HEAD;
proxy_cache_revalidate on;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_cache_valid any 1m;
proxy_cache_min_uses 1;
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# https 虚拟主机
server {
listen 4435 ssl;
server_name localhost;
ssl_certificate D:/work/net/grpc-cluster/server-cert.pem;
ssl_certificate_key D:/work/net/grpc-cluster/server-key.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
location / {
proxy_pass http://YDT.EBusiness;
}
}
}
#动态负载均衡配置
upstream XT.EBusiness{
ip_hash;
server localhost:5001 max_fails=2 fail_timeout=10s;
server localhost:5002 max_fails=2 fail_timeout=10s;
server localhost:5003 backup;
}
}
总结
Nginx作为网关层代理是个很重要部分,HTTPS配置也是Nginx一部分,在Nginx配置HTTPS可以保障系统的安全性。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)