解决alitomcat中无法获得https协议的问题

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: ###事件: 客户反馈,为什么配置https请求,使用request.getScheme()、request.getServerPort(),后台获取访问协议和端口的时候还是获取的http和80。。 ###用户架构: CDN+SLB+EDAS应用 其中 CDN使用443端口回源 SLB配置安全证书使用HTTPS公网IP访问 EDAS使用Alitomcat,server.xml配置

事件:

客户反馈,为什么配置https请求,使用request.getScheme()、request.getServerPort(),后台获取访问协议和端口的时候还是获取的http和80。。

用户架构: CDN+SLB+EDAS应用

其中
CDN使用443端口回源
SLB配置安全证书使用HTTPS公网IP访问
EDAS使用Alitomcat,server.xml配置

< Valve className="org.apache.catalina.valves.RemoteIpValve"
      remoteIpHeader="x-forwarded-for"
      remoteIpProxiesHeader="x-forwarded-by"
      protocolHeader="x-forwarded-proto"/>

通过用户沟通已经需求已经比较清晰。
用户希望在后端ECS处,可以拿到客户端真实请求的来源IP(x-forwarded-for)和协议(X-Forwarded-Proto),但目前情况是在自建服务器的tomcat上使用正常,换成阿里服务器后有问题,获得的仍然是http和80。

排查过程:

  1. 首先用分离的方式将CDN去除。可将域名解析改为SLB公网IP
  2. 判断SLB是否转发正常。SLB的机制,是将公网入口请求转化为内网请求传给ECS,公网入口走https,内网出口走http,X-Forwarded-Proto属性在SLB中需要单独开启“SLB监听协议”属性,通过X-Forwarded-Proto头字段获取SLB的监听协议进行转发给后端。
  3. 开启该协议后,验证ECS是否收到了对应的属性。可通过在ECS上抓包的方式来识别。
    通过tcpdump抓包,看到在访问SLB的https协议时,X-Forwarded-Proto确实为https

图片.png

  1. 那么为什么alitomcat上没有得到对应的https值呢。通过上网查询。由于internalProxies匹配的内网IP不包含SLB的100段的IP,需要配置internalProxies="100.d{1,3}.d{1,3}.d{1,3}"来识别转发IP。

如果没有配置,则默认IP地址为

Regular expression (using java.util.regex) that a proxy's IP address must match to be considered an internal proxy. Internal proxies that appear in the remoteIpHeader will be trusted and will not appear in the proxiesHeader value. If not specified the default value of 10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|169\.254\.\d{1,3}\.\d{1,3}|127\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.1[6-9]{1}\.\d{1,3}\.\d{1,3}|172\.2[0-9]{1}\.\d{1,3}\.\d{1,3}|172\.3[0-1]{1}\.\d{1,3}\.\d{1,3} will be used.

详细内容可以访问
http://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/valves/RemoteIpValve.html

重启应用后,用SLB访问Https测试可得:
图片.png
验证生效,结果正确。

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
7月前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
207 18
|
7月前
|
网络安全 开发者
如何解决HTTPS协议在WordPress升级后对网站不兼容的问题
以上就是解决WordPress升级后HTTPS协议对网站的不兼容问题的方法。希望能把这个棘手的问题看成是学校的管理问题一样来应对,将复杂的技术问题变得更加有趣和形象,并寻觅出解决问题的方式。希望你的网站能在新的学期得到更好的发展!
203 19
|
7月前
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
700 20
|
7月前
|
安全 网络协议 算法
HTTP/HTTPS与SOCKS5协议在隧道代理中的兼容性设计解析
本文系统探讨了构建企业级双协议隧道代理系统的挑战与实现。首先对比HTTP/HTTPS和SOCKS5协议特性,分析其在工作模型、连接管理和加密方式上的差异。接着提出兼容性架构设计,包括双协议接入层与统一隧道内核,通过协议识别模块和分层设计实现高效转换。关键技术部分深入解析协议转换引擎、连接管理策略及加密传输方案,并从性能优化、安全增强到典型应用场景全面展开。最后指出未来发展趋势将更高效、安全与智能。
260 1
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性
|
8月前
|
安全 网络安全 数据安全/隐私保护
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
436 3
|
10月前
|
网络协议 安全 网络安全
HTTP与HTTPS协议入门
HTTP协议是互联网的基石,HTTPS则是其安全版本。HTTP基于TCP/IP协议,属于应用层协议,不涉及数据包传输细节,主要规定客户端与服务器的通信格式,默认端口为80。
401 25
HTTP与HTTPS协议入门
|
12月前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
688 3
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
361 11
|
缓存 安全 网络协议
HTTPS协议的历史发展
HTTPS协议的历史发展
502 8