使用 openssl 检查服务器安全协议

2024-06-19

我有一个框架应用程序,它根据使用方式连接到不同的服务器。对于 https 连接,使用 openssl。我的问题是,我需要知道我连接的服务器是否使用 SSL 还是 TLS,以便我可以创建正确的 SSL 上下文。目前,如果我使用错误的上下文尝试建立连接就会超时。

对于 TLS,我使用:

SSL_CTX *sslContext = SSL_CTX_new(TLSv1_client_method());

对于 SSL 我使用:

SSL_CTX *sslContext = SSL_CTX_new(SSLv23_client_method());

那么有没有办法在建立连接之前知道服务器正在运行哪种协议呢?

编辑:据我现在的理解,它应该以任何方式工作,因为SSLv23_client_method()还包含 TLS 协议。那么问题是为什么不呢?一种客户端方法超时而另一种客户端方法不超时的原因可能是什么?


For SSL I use:
SSL_CTX *sslContext = SSL_CTX_new(SSLv23_client_method());

TLS 只是以前的 SSL 协议的当前名称,即 TLS1.0 实际上是 SSL3.1 等。SSLv23_client_method实际上是建立 SSL/TLS 连接的最兼容的方式,并且将使用可用的最佳协议。这意味着如果服务器支持,它还将创建 TLS1.2 连接。另请参见SSL_CTX_new 的文档 https://www.openssl.org/docs/ssl/SSL_CTX_new.html:

SSLv23_method(void)、SSLv23_server_method(void)、SSLv23_client_method(void)

使用这些方法建立的 TLS/SSL 连接可以理解 SSLv2、SSLv3、TLSv1、TLSv1.1 和 TLSv1.2 协议。

...客户端将发送包含扩展的 TLSv1 客户端问候消息,并指示它也理解 TLSv1.1、TLSv1.2 并允许回退到 SSLv3。服务器将支持 SSLv3、TLSv1、TLSv1.1 和 TLSv1.2 协议。当考虑兼容性时,这是最佳选择。

您可以禁用任何您不需要的协议(例如 SSL3.0)SSL_OP_NO_SSLv3等并使用SSL_CTX_set_options.

目前,如果我使用错误的上下文尝试建立连接就会超时。

那么服务器或您的代码就会被破坏。如果服务器获得与其不理解的协议的连接,则应返回“未知协议”警报。其他服务器只是关闭连接。超时通常只会发生在服务器或中间盒损坏的情况下,例如旧的服务器或中间盒F5大IP负载均衡器 https://code.google.com/p/chromium/issues/detail?id=303398.

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

使用 openssl 检查服务器安全协议 的相关文章

  • 具有自动返回类型推导的 Friend 函数模板无法访问私有成员

    抱歉这个问题的标题太复杂了 我试图描述我为这个问题构建的最小 SSCCE 我有以下代码 include
  • ExecuteNonQueryAsync 并在 SQL 事务中提交

    我正在寻求对我创建的一段代码的帮助 我正在尝试在事务中从 C 进行异步 SQL 调用 例如我可能正在更新或删除表中的行 这是我到目前为止所拥有的 但我似乎无法找到有关在事务中执行此操作的太多信息 根据我在这里所拥有的以及到目前为止我所理解的
  • 嵌套绑定表达式

    这是一个后续问题我之前的问题 https stackoverflow com questions 2735294 templates function pointers and c0x include
  • 如何防止函数中的隐式转换?

    我正在编写一个实用程序类 其中包含 IsEquals 和 IsGreaterThanEquals 等接受 double 类型参数的方法 当我将浮点值发送到方法时 它们会隐式转换为双精度值并进行比较 我不希望这种事发生 当我发送 float
  • Linq Any 始终返回 true

    我已经使用 Linq to Entities 多年 但这是我第一次遇到这个问题 我有Tips and Items表 每个提示可以有很多项目 我的数据库中只有 3 个项目 编辑项目时 我想确保GivenId对于具有相同提示的项目 字段是唯一的
  • 改装和授权标头

    目前 我正在向我的请求添加授权标头 如下所示 文件 SomeFile cs public interface ITestApi Get api test id Task
  • gcc 的错误?模板类中友元函数的访问控制问题

    我有一个模板类 并在类中定义了一个友元函数 include
  • 即使在不活动状态下,Hangfire 也会继续运行 SQL 查询

    我正在开发一个 ASP net MVC 5 网站 并使用 Hangfire 来安排一些任务 在本例中每 3 分钟一次 我知道一个事实是 运行这样的任务 以及与之相关的数据库查询 只需要几秒钟 我面临的问题是 Hangfire 似乎让我的 S
  • 为什么未命名的命名空间不等同于带有“using命名空间”声明的常规命名空间?

    A 最近的话题 https stackoverflow com questions 3673353 anonymous namespace ambiguityon SO 触发了这个 未命名的命名空间被认为等同于 namespace uniq
  • “未定义对 clrscr() 的引用;” [复制]

    这个问题在这里已经有答案了 include
  • 从 Windows 选择声音并播放它们

    我有一个 WinForms 应用程序 该应用程序有一个 首选项 部分 用户可以在其中选择显示警报时播放哪些声音 是否可以有一个组合框 用户可以从 Windows 存储的声音中进行选择 例如 紧急停止 紧急蜂鸣 等 这些可以在 控制面板 gt
  • 设置了 OFN_ALLOWMULTISELECT 标志的 GetOpenFileName()

    我正在尝试使用 GetOpenFileName 通用对话框调用来弹出打开对话框并允许用户选择多个文件 我设置了 OFN ALLOWMULTISELECT 标志 并设置了 OFN EXPLORER 因此我得到了 新样式 文件选择框 当我设置
  • 作为服务运行时,URLDownloadToFile() 将对象写入缓存中

    我有一个软件 可以将图像下载到工作目录中 然后对其进行处理以创建视频 之后 这些文件将被独立脚本删除 问题是它还将文件写入以下目录 该软件作为系统服务运行 C Windows SysWOW64 config systemprofile Ap
  • 获取上下文菜单的控制

    我有一个如下所示的上下文菜单 A 1 2 3 选择 1 2 或 3 后 我需要访问调用上下文菜单的对象 意思是如果这是 textbox1 的上下文菜单 那么我需要访问该对象 我该怎么做 忘了说了 这是一个WPF应用程序 所以我使用 Syst
  • 是否可以使用 struct stat 描述符获取和设置文件名?

    是否可以在获取或设置 重命名 文件名时给出文件的绝对路径 并将 struct stat 实例作为 lstat 函数的参数 正如我在文档结构中发现的那样 struct stat dev t st dev ID of device contai
  • 如何打开 Outlook 已接收和阅读电子邮件

    我们有 5 个人 使用同一封电子邮件通过 Outlook 回复客户 我想设计一个程序来打开所有已发送的电子邮件 阅读它们 打开它们 找到第一个人的签名 并在他 她的计数器中添加一个数字 以便我可以得出一些统计数据 关于如何打开 Outloo
  • 在方法签名中使用 new 关键字通常只是为了可读性吗?

    我读过关于new关键词在方法签名中并看到了下面的例子this https stackoverflow com questions 1014295 c sharp new keyword in method signature发帖了 但还是不
  • 实现多个接口的 Service Fabric Actor 接口

    我正在构建一个应用程序 其中有多个不同的参与者类型 这些参与者类型对于某些不同的数据对象具有相同类型的行为 CRUD 为了更轻松地创建处理此问题的代码 我尝试创建一个这些参与者可以实现的接口 这意味着我有一个看起来像这样的参与者界面 pub
  • 如何在 C 中将 int 和数组保存在共享内存中?

    我正在尝试编写一个程序 让子进程在 Linux 上相互通信 这些进程都是从同一个程序创建的 因此它们共享代码 我需要它们能够访问两个整数变量以及一个整数数组 我不知道共享内存是如何工作的 我搜索过的每一个资源除了让我困惑之外什么也没做 任何
  • 类型与创建 CLR 存储过程不匹配

    我在程序集中有一个如下所示的方法 namespace MyNameSpace public class MyClass Microsoft SqlServer Server SqlProcedure public static void M

随机推荐

  • 如何通过子 POJO 的属性过滤复合 ManyToMany POJO?

    我有两个像这样的房间实体 Entity public class Teacher implements Serializable PrimaryKey autoGenerate true public int id ColumnInfo n
  • 当我更改浏览器选项卡时,Jquery Animate 停止

    我的投资组合中有一个疯狂的问题 http hericdk com http hericdk com 我用jquery做了一个简单的动画 一个太空飞船飞行的动画 然后就出现了我的作品 这个想法不错 大家都喜欢 但问题是 由于某种奇怪的原因 当
  • 人们今天使用的可扩展语言是什么?

    维基百科说 可扩展编程是计算机科学中使用的一个术语 描述一种计算机编程风格 重点关注扩展编程语言 编译器和运行时环境的机制 例如 Tcl 允许您编写自己的控制结构 看here http wiki tcl tk 685 我有兴趣编制在实际代码
  • 如何使用 jQuery 通过 Ajax 发送复选框数组的值?

    我有一个包含很多表单字段的表单 12 x n 行 每行中的第一个字段 代表产品 是一个类似于以下内容的复选框
  • 使用反射获取基类的受保护属性值

    I would like to know if it is possible to access the value of the ConfigurationId property which is located in the base
  • 在 iOS 中从 ACAccountStore 获取 Facebook uid?

    您好 我想获取 Facebook 用户的 UIDAC帐户商店在 iOS 6 中 self accountStore ACAccountStore alloc init ACAccountType FBaccountType self acc
  • 如何将函数传递给 JavaScript Web Worker

    我想通过一个 或多个 函数传递postMessage 给网络工作者 因为我无法引用常规文件 为了启动 Web Worker 我将一个对象 URL 从 Blob 创建 传递给Worker构造函数 然后我传递一条消息 但到目前为止还没有在消息中
  • android中如何布局支持各种屏幕?

    我正在使用gridview开发图库视图 在小屏幕中我的布局设计修复得很好 但大屏幕没有我的设计 在大屏幕中有一些空格 加载更多图片 按钮参考图2 我该如何解决这个问题 我的清单文件添加了这一行以支持各种屏幕 请给我一些示例代码
  • 特定设备的不同字体大小

    我目前正在开发通用应用程序 我需要分别处理移动设备和桌面的文本框字体大小 我找到了一些方法 但都不能解决问题 使用 VisualStateManager 和 StateTrigger 为例
  • .net Framework (.net 4.0) 中定义 Base 3 数字的类

    我正在寻找一些可以用来定义 3 基数 三进制数 的类 有什么我可以在 net 框架中使用的东西或者我需要写一些东西吗 谢谢你的帮助 您可以使用解析Convert ToInt32 s base http msdn microsoft com
  • htaccess mod-重写子域

    我使用以下命令将通配符子域重定向到相应的文件夹 RewriteCond REQUEST URI users NC RewriteCond HTTP HOST domain com NC RewriteCond 1 www NC Rewrit
  • 在 php、ajax 或 javascript 中加载进度?

    任何人都知道如何在系统仍在服务器端获取数据的同时在客户端显示加载进度以及完成的百分比 例如 当我在客户端按下 确定 按钮时 它会调用服务器端从数据库收集数据 整个过程可能需要2到3分钟 如何在客户端显示加载进度 大约加载完成了多少 我怎样才
  • PostgreSQL-过滤日期范围

    我是一名 SQL 开发人员 大部分时间都花在 MSSQL 上 我正在寻找一种更好的方法来过滤 PostgreSQL 数据库中的 无时区时间戳 字段 我在用着 Where DateField gt 2010 01 01 and DateFie
  • 如何在警报对话框中为图像按钮设置 onclick 侦听器

    我有一个带有 ImageButton 的布局 该布局在 AlertDialog 中膨胀 我应该在哪里 如何设置 onClick 侦听器 这是我尝试使用的代码 ImageButton ib ImageButton findViewById R
  • 生成 .tail IL 指令的简单 F# 代码是什么?

    我想看看 tailIL 指令 但我一直在编写的使用尾部调用的简单递归函数显然已优化为循环 我实际上是在猜测这一点 因为我不完全确定反射器中的循环是什么样的 我绝对没有看到任何 tail不过操作码 我在项目的属性中检查了 生成尾部调用 我还尝
  • 在 .htaccess 中更改什么以使其停止显示子域

    我有这个 RewriteEngine on RewriteCond HTTP HOST m myurlname com RewriteCond HTTP USER AGENT safa NC RewriteRule http m myurl
  • 如何使用 Guava 连接字符串?

    我写了一些代码来连接字符串 String inputFile for String inputLine list inputFile inputLine trim 但我不能使用 连接 所以我决定使用 Guava 所以我需要使用Joiner
  • Facebook Android 意图

    我对这个意图有疑问 这个意图是发送文本类型的消息 一切正常 电子邮件 短信 推特以及手机上的任何内容 但唯一有问题的是facebook 它会尝试以链接而不是文本的形式发布 Intent s new Intent android conten
  • 用 C# 制作 Vista 风格的应用程序

    我正在运行 Windows Vista 并且希望外观看起来像常规 Vista 程序 有没有关于如何构建 Vista 风格应用程序的真正好的教程 文章 我还想学习如何使用本机代码并将其转换为 C 如this http bartdesmet n
  • 使用 openssl 检查服务器安全协议

    我有一个框架应用程序 它根据使用方式连接到不同的服务器 对于 https 连接 使用 openssl 我的问题是 我需要知道我连接的服务器是否使用 SSL 还是 TLS 以便我可以创建正确的 SSL 上下文 目前 如果我使用错误的上下文尝试