【HTTPS】TLS/SSL握手失败的场景分析

2023-05-16

0.背景知识

TLS/SSL握手的过程参考 SSL握手过程图解

1.常见报错

1.1 SSLHandshakeException handshake_failure

1.1.1 TLS/SSL协议版本不匹配

自从TLS 1.2版本在2008年发布以来,服务器处于安全性考虑通常也只支持较高版本TLS,比如TLS1.2及以上,如果这些客户端用低版本TLS/SSL向服务器发起握手,会因为服务器不支持而直接失败。

如JDK1.6就是用TLS1.0,访问使用TLS1.2的服务端就会报错,可以升级JDK1.8,默认使用1.2

1.1.2 cipher suite加密算法套件不匹配

服务器出于安全性考虑通常只会支持安全性较高的cipher,所以当客户端发过去的cipher suite安全性都比较低时会造成协商握手失败。

具体解决请戳

1.2 证书问题 

1.2.1.客户端Bad Certificate

双向认证,不仅客户端要验证服务器证书,服务器也需要验证客户端证书。在服务器验证客户端证书的过程中,由于客户端证书证书链校验不通过,可能会直接产生Fatal Alert,导致握手直接中断。

解决方案:使用著名CA签发(如CFCA等)的客户端证书,如果可联系服务端开发可直接将自己的客户端证书放置在其信任列表汇总。

1.2.2 服务端 Certificate Validation

认证服务端证书如果证书链的最后一跳,不在客户端的信任证书列表,则会报证书校验不通过,此时需要手动加入服务端证书到信任证书列表,或者设置永久信任。Java实现,可以通过实现SSLContext等API,具体可以百度~

1.3 SSLException: Received fatal alert: internal_error

1.3.1 无法提取SNI导致TLS/SSL握手失败

在某些场景中,需要获取ClientHello中的SNI字段来作为一个必要条件, 比如用NGINX stream对HTTPS流量做4层代理时。客户端ClientHello中没有携带SNI,则会造成一个通过代理握手失败的局面。

在利用NGINX stream做正向代理时,NGXIN服务器需要获取客户端想要访问的目的域名。利ngx_stream_ssl_preread_module模块在不解密的情况下拿到ClientHello报文中SNI才能实现代理的正常功能。

具体问题和解决方案请戳

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【HTTPS】TLS/SSL握手失败的场景分析 的相关文章

  • 重复的“Access-Control-Allow-Origin: *”标头会破坏 CORS 吗?

    所以我们有一个提供 JSON 服务的 http 资源 它添加了一个 Access Control Allow Origin 旗帜 所以这可以用 CORS 加载 except 所以我被告知 有一些 IE9 怪癖 这意味着这在 IE9 中仍然不
  • Android - API 请求

    我开发了一个应用程序 它也在 iPhone 上 问题出在 api 请求上 我为所有请求设置了超时 有时会出现 30 60 秒的中断 看起来这个应用程序执行了几个请求 然后就中断了 一直超时 大约 45 秒后一切正常 不知道是服务器问题还是安
  • 是否可以使用流上下文在 PHP 下使用 FTPS?

    我了解到使用ftpsPHP for Windows 下的 ftp ssl connect 很困难 您被要求进入构建自己的二进制文件以包括 Open SSL 的漫长旅程 我找到了以下建议phpseclib http phpseclib sou
  • Django HTTPS 和 HTTP 会话

    我使用 Django 1 1 1 和 ssl 重定向中间件 通过 HTTPS 创建的会话数据 身份验证等 在站点的 HTTP 部分中不可用 无需将整个站点设置为 HTTPS 即可使其可用的最佳方法是什么 这是设计使然 您无法轻易更改 当通过
  • 在 Visual Studio 中设置 SSL 证书

    我在新计算机上全新安装了 Visual Studio Community 2019 我启动了一个网络应用程序项目 第一次运行它 然后当提示接受自签名证书时 我以某种方式设法单击 不再询问 and No 此时 运行网络应用程序时 我收到 ER
  • 信任库是否需要子 ca 证书?

    我正在尝试设置分层 PKI 我是否可以创建仅包含根 ca 证书的信任库 这是否意味着我的应用程序信任由子 ca 证书签名的证书 而子 ca 证书又由根 ca 签名 顺便说一句 您似乎必须提供整个证书链 包括根 ca 证书 当然 如果根 ca
  • Node.js 上的 starttls > 0.4.0

    我遇到了这个线程Node js HTTPS 安全错误 https stackoverflow com questions 5136353 node js https secure error其中提到 tls 模块是现在在节点上执行 TLS
  • Facebook JavaScript SDK 通过 HTTPS 加载非安全项目

    我有一个 Facebook 应用程序 使用Facebook Connect js https connect facebook net en US all js 我正在通过 HTTPS 运行我的应用程序 网站上的所有内容均来自https 但
  • 我什么时候需要将“协商客户端证书”设置为启用?

    我可以选择支持客户端证书 这就是为什么我设置Client certificates to Accept在 IIS 上 这适用于大多数机器 然而 在某些机器上 IIS 返回 500 这可以通过设置来 解决 Client certificate
  • 在linux上安装python ssl模块,无需重新编译

    是否可以在已经安装了 OpenSSL 的 Linux 机器上安装 python 的 SSL 模块 而无需重新编译 python 我希望它就像复制几个文件并将它们包含在库路径中一样简单 Python版本是2 4 3 谢谢 是否可以在已经安装了
  • Azure 共享计划上的 SSL?

    我有 1 个网站 1 个数据库和 1 个 SSL 托管在 azure 上 我曾经拥有 基本 托管套餐 但每个月要支付 70 美元才能获得基本设置 并且所有内容都具有最小的缩放比例 我意识到我的低流量站点不需要专用计算机 因此我尝试转向共享计
  • 握手失败(40) 和 TLS_EMPTY_RENEGOTIATION_INFO_SCSV

    安装在 jBOSS 上的客户端正在尝试访问在 DataPower 上配置的安全网站xi50v6 0 0 2器具 SSL 握手时连接失败 我在 DataPower 上进行了数据包捕获 发现 SSL 握手失败 并显示以下错误 Descripti
  • 使用 DigitalOcean 在 Kubernetes 集群上为我的 Nginx-Ingress 生成通配符证书

    我遵循了这个 DigitalOcean 指南https www digitalocean com community tutorials how to set up an nginx ingress with cert manager on
  • 将非 www 和非 http 重定向到 https

    昨天我在服务器上安装了 SSL 从那以后我无法访问某些页面 www example com amsterdam shoes example com 阿姆斯特丹 两者都不会重定向到 https 甚至不会重定向到 http www exampl
  • FormsAuthentication:安全吗?

    Using 表单验证构建成asp net创建一个为经过身份验证的用户创建 cookie 的登录系统非常快速且简单 FormsAuthentication SetAuthCookie uniqueUsername false 与中的一些代码配
  • 使用ssl和socket的python客户端身份验证

    我有一个 python 服务器 需要客户端使用证书进行身份验证 我如何制作一个客户端脚本 使用客户端证书由 python 中的服务器使用 ssl 和套接字模块进行身份验证 有没有仅使用套接字和 ssl 而不扭曲的示例 from OpenSS
  • 如何使用httplib2进行相互证书认证

    我正在使用 httplib2 从我的服务器向另一个 Web 服务发出请求 我们想要使用相互证书身份验证 我了解如何使用证书进行传出连接 h set certificate 但是如何检查应答服务器使用的证书 这张票 http code goo
  • git 错误:无法处理 https

    当我尝试使用 git clone 时https xxx https xxx我收到以下错误我不处理协议 https 有人可以帮我吗 完整消息 dementrock dementrock A8Se git 克隆https git innosta
  • 从 SSLv3 迁移到 TLSv1

    对于 POODLE SSLv3 现已在服务器上禁用 客户端软件是在 NET 2 0 中开发的 并提供 TLSv1 作为唯一的替代方案 我有权并有能力更改客户端应用程序和服务器配置 ServicePointManager SecurityPr
  • 无法访问 GitLab:SSL 证书已过期

    在 Visual Studio 中 我尝试从 GitLab 上的存储库中提取一些更改 但它给了我一个错误 Git 因致命错误而失败 无法访问https gitlab git SSL证书问题 证书已过期 如何生成新证书并将其添加到 VS 中

随机推荐

  • Debian配置ssh并限制只有指定主机的指定用户可登录

    Debian服务器IP xff1a 192 168 200 129 Debian客户端IP xff1a 192 168 200 131 Debian默认安装了openssh client xff0c 所以服务器端只需要安装openssh s
  • 什么是真正的转运?常见的五种转运方法

    转运在玄学中的含义和大家想有所不同 xff0c 转运在玄学指日月星辰的移动 xff0c 如王充 论衡 说日 xff1a 然而日出上日入下者 xff0c 随天转运 在玄学中还有三元九运之说 xff0c 此皆是星之变化 于天转运是星象改变 xf
  • 微软各系列软件中 MSDN 、 RTM 、 OEM 、 VOL 各版本的含义和区别

    关注系统的朋友会发现 xff0c 微软正式版本的系统往往带有不同的 名号 xff0c 主要分为MSDN版 xff0c RTM版 xff0c OEN版 xff0c 在过去的操作系统中还有VOL版本 xff0c 经常听这几个名词 xff0c 却
  • 部署私有笔记管理系统(为知笔记)

    免费版仅创建5个用户 https hub docker com r wiznote wizserver span class token function docker span run name wz note restart span
  • 树莓派镜像烧录以及使用vscode开发

    树莓派镜像烧录以及使用vscode开发 烧录镜像 1 下载烧录软件 xff08 balenaEtcher下载地址 xff09 2 下载树莓派镜像 下载地址 这里也提供了博主的镜像 下载慢的同学可以看看 下载链接 3 插入sd卡 xff0c
  • gradle指定相应JDK编译

    问题描述 电脑中装有多个jdk版本 xff0c 可能默认的jdk是1 6 xff0c 但是项目中用到了俗称钻石语法的结构就是 lt gt 这玩意 但是由于你装的某些软件必须在1 6版本下才能跑 xff0c 因此你不想更改的你的JAVA HO
  • 无线路由器的连接与设置

    无线路由器的连接与设置 实验目的 掌握无线路由器基础知识掌握无线路由器设置学会使用设备连接无线路由器 实验环境 无线路由器 xff08 FAST迅捷 FW313R xff09 台式机 无线设备 实验内容 1 设置无线路由器上网方式为 固定I
  • 浅谈 PHY 芯片 UTP 接口直连(不使用变压器)的设计

    浅谈 PHY 芯片 UTP 接口直连 xff08 不使用变压器 xff09 的设计 1 背景 xff1a 一个项目 xff0c 需要把IP101GR模块的UTP接口和交换机芯片 xff08 RTL8305NB xff09 的 UTP 接口连
  • 千万不要去外国当程序员

    今天我来讲讲我这样的一个普通程序员是如何从有想法 xff0c 到实施 xff0c 到最后来到欧洲务工的 整个过程很曲折 xff0c 文章有点长 xff0c 大家给点耐心 如果看不下去请直接翻到最后 xff0c 有总结 个人背景 为了避免有人
  • 逻辑思维能力选择题30道

    逻辑思维能力选择题30道 这些题目都是作者选取于网络 xff0c 靠自己动脑做出来的是最棒的 1 有一个有钱人想让你和他玩一个游戏 xff0c 你在纸上写下一句话 xff0c 并作出选择 选择1 xff1a 如果你写的是实话 xff0c 那
  • 单位换算表大全

    长度 1千米 km 61 0 621英里 mile 1米 m 61 3 281英尺 ft 61 1 094码 yd 1丝米 dmm 61 1忽米 cmm 61 1丝 61 0 01毫米 61 0 001厘米 1厘米 cm 61 0 394英
  • Debian配置CA_配置Apache2使用ssl_配置http连接自动跳转到https

    需要使用到两台Debian服务器 xff0c 一台作为ca端 xff0c 一台作为Apache端 ca端IP xff1a 192 168 200 129 Apache端IP xff1a 192 168 200 131 以下是CA端配置 xf
  • 重量(计量单位)英文缩写和转换表

    重量的缩写是W 一 质量单位换算 xff1a 1长吨 xff08 long ton xff09 61 1 016吨 xff08 t xff09 1千克 xff08 kg xff09 61 2 205磅 xff08 lb xff09 1磅 x
  • 逻辑学三大定律是什么?

    逻辑思维三大定律 同一律 xff0c 矛盾律 xff0c 排中律 同一律 xff1a A 是 A 前后思维中 xff0c 概念要同一 白马非马论违反同一律 商家的买一赠一 xff0c 前后两个一不是同一个概念 违反同一律 矛盾律 xff1a
  • 逻辑学三大定律

    1 同一律就是前后提及概念 论题要是同一个 xff0c 不是同一个就是不合逻辑的 看这句话 xff0c 人有几百万年的历史 xff0c 你没有几百万年的历史 xff0c 所以你不是人 xff0c 典型的三段论 xff0c 大前提 xff0c
  • LeetCode:移除元素

    给你一个数组 nums 和一个值 val xff0c 你需要 原地 移除所有数值等于 val 的元素 xff0c 并返回移除后数组的新长度 不要使用额外的数组空间 xff0c 你必须仅使用 O 1 额外空间并 原地 修改输入数组 元素的顺序
  • C#高级特性(反射)

    今天来讲解反射的应用 xff1a 一 反射是什么 xff1f 简诉一下 xff0c 反射就是 Net Framework 的一个帮助类库 xff0c 可以获取并使用metadata xff08 元数据清单 xff09 xff1b 说的通俗易
  • Linux 操作命令 c

    1 打开终端的快捷键 ctr 43 alt 43 t 2 终端字体放大 ctr 43 shift 43 43 3 终端字体缩小 ctr 43 4 ls 查看当前目录的下文件信息 5 pwd 当前当前目录的路径 6 touch 创建一个文件
  • java实现平面4点最小距离

    已知平面上若干个点的坐标 需要求出在所有的组合中 xff0c 4个点间平均距离的最小值 xff08 四舍五入 xff0c 保留2位小数 xff09 比如有4个点 xff1a a b c d 则平均距离是指 xff1a ab ac ad bc
  • 【HTTPS】TLS/SSL握手失败的场景分析

    0 背景知识 TLS SSL握手的过程参考 SSL握手过程图解 1 常见报错 1 1 SSLHandshakeException handshake failure 1 1 1 TLS SSL协议版本不匹配 自从TLS 1 2版本在2008