zl程序教程

您现在的位置是:首页 >  前端

当前栏目

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

HTTPS协议 解决 无法 获得 问题
2023-09-27 14:27:26 时间
###事件: 客户反馈,为什么配置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。

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

图片.png

那么为什么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 proxys 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
验证生效,结果正确。


大数据开发基础的计算机网络的DNS/HTTP/HTTPS协议 在大数据开发中,计算机网络的DNS/HTTP/HTTPS协议是非常基础和重要的协议,它们负责着网络通信和数据传输的关键任务。以下是这些协议的简要介绍。
一点http协议及报文的学习 # 引言 今天我们一起学习一些前端理论上的一些知识-http # Http的历史 **HTTP**(HyperText Transfer Protocol)是万维网(World Wide Web)的基础协议。自 Tim Berners-Lee 博士和他的团队在 1989-1991 年间创造出它以来,HTTP 已经发生了太多的变化,在保持协议简单性的同时,不断扩展其灵活性。如今,HTTP 已经从一个只在实验室之间交换文件的早期协议进化到了可以传输图片,高分辨率视频和 3D 效果的现代复杂互联网协议。 http协议从最早的只支持get,响应只有html的http0.9不断发展,到简单可
HTTPS协议实现的原理 HTTPS协议,相关的概念包括SSL、非对称加密、CA证书 先说一下什么是对称加密和非对称加密。 双方加密解密都用相同密钥的算法,称为对称加密算法。 使用对称加密的缺点,使用对称加密双方都知道密钥和算法。加密解密用的是一个密钥,加密是正向的过程,解密是逆向过程。
【Node.js】HTTP协议、HTTP的请求报文和响应报文 HTTP 全称为超文本传输协议,是用于从WWW服务器传输超文本到本地浏览器的传送协议,基于TCP的连接方式,它可以使浏览器更加高效,使网络传输减少。