SSL/TLS 卸载(offloading/termination) -- 利用 nginx
来源:互联网 发布:小米平板2 windows版 编辑:程序博客网 时间:2024/06/05 14:45
写在前面
本文主要涉及
* openssl 生成证书
* nginx 配置 SSL Offloading
* X-Forwarded-For
* nginx 日志
至于SSL/TLS是怎么被卸载的呢? SSL/TLS 卸载(offloading/termination) – C语言 + openssl 实现 一文给了一个demo, 仅供参考.
本人对相关知识理解并不深入, 仅为满足个人好奇心, 可能存在描述或解释错误的地方, 文章内容仅供参考!
环境
http server (nginx): 172.16.1.141
ssl offloader(nginx): 172.16.1.199
client/browser: 172.16.1.206
系统均是
CentOS 7
http server(nginx)
172.16.1.141上使用nginx作为http server
, 配置这里就省略了
网站由一个简单的html文件和一个文本文件构成, 之所以加一个文本文件, 是为了观察browser
连续发送两个请求.
$ cat html/index.html <html> <img src="/test.txt" alt="test" /></html>$ cat html/test.txt hello world!
请忽略文本文件的引用为什么在html中用的是
img
标签
ssl offloader(nginx)
172.16.1.199上, 生成证书
$ openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
172.16.1.199上, nginx配置
$ cat /etc/nginx/nginx.confhttp { ... upstream mywebapp1 { server 172.16.1.141; # http server(也是使用的nginx) } server { listen 80; listen 443 ssl; server_name example.com www.example.com; # 启用SSL # cert.pem, key.pem是前面步骤生成的 ssl on; ssl_certificate /etc/nginx/ssl/example.com/cert.pem; ssl_certificate_key /etc/nginx/ssl/example.com/key.pem; # Ignore the ssl_trusted_certificate directive if you are using self-signed certificates. # ssl_trusted_certificate /etc/nginx/ssl/example.com/ca-certs.pem; root /usr/share/nginx/html; location / { proxy_pass http://mywebapp1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # offloader(nginx) 会向http header 中添加 X-Forwarded-For 字段 proxy_set_header X-Forwarded-Proto $scheme; } ... } ...}
测试
172.16.1.206 上浏览器访问 https://172.16.1.199
或者使用curl
172.16.1.141 上查看nginx(http server) 日志
172.16.1.141 $ cat /var/log/nginx/access.log172.16.1.199 - - [03/Nov/2017:14:59:50 +0800] "GET / HTTP/1.1" 200 78 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" "172.16.1.206"172.16.1.199 - - [03/Nov/2017:14:59:50 +0800] "GET /test.txt HTTP/1.1" 200 13 "https://172.16.1.199:4433/" "Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" "172.16.1.206"
行首的172.16.1.199
是offloader
的IP, 因为, 对于http server
, TCP连接的源端是offloader
行尾的172.16.1.206
是browser
的IP, 这是怎么来的呢? offloader
收到请求后, 在向http server
转发时, 会向http header
中添加X-Forwarded-For: 172.16.1.206
以告诉http server
这个连接是从哪来的. 最后http server
将”真正的”源端IP记录到日志中
- SSL/TLS 卸载(offloading/termination) -- 利用 nginx
- SSL/TLS 卸载(offloading/termination) -- C语言 + openssl 实现
- nginx 安装 卸载 开启ssl
- Exadata的独门武器--卸载(Offloading)
- SSL/TLS
- SSL/TLS
- TLS SSL
- ssl/tls
- SSL/TLS
- SSL/TLS
- Nginx开启多SSL证书支持--TLS SNI support
- 如何利用TLS/SSL与防火墙规则保护CoreOS集群
- [SSL/TLS] SSL/TLS协议综合总结
- [SSL/TLS] SSL/TLS协议综合总结
- [SSL/TLS] SSL/TLS协议综合总结
- Improved HTTPS Performance with Early SSL Termination
- SSL/TLS/WTLS原理
- SSL/TLS/WTLS原理
- centOs下环境变量的配置
- uva11732 strcmp 字典树 存储
- 吴恩达deeplearning.ai课程系列笔记09
- 机器学习实战笔记-K近邻算法1(分类动作片与爱情片)
- STM32中GPIO的8种工作模式介绍
- SSL/TLS 卸载(offloading/termination) -- 利用 nginx
- 移动测试常用知识点整理
- 可用于神经网络的一些matlab函数
- 各种Alert用法
- 机器学习笔记1——机器学习的定义与分类
- Discord 为 Linux 用户发布了应用
- 线段树模板
- PAT 1074. 宇宙无敌加法器
- 第九课:【歌手详情】