带有libssl的TLS 1.2的SNI与C应用程序集成

时间:2018-12-05 16:05:33

标签: openssl

与正在将其应用程序迁移到云中的合作伙伴遇到问题。最初,TLS握手失败:

140659109308320:错误:1409E0E5:SSL例程:ssl3_write_bytes:ssl握手失败:s3_pkt.c:659:

在命令行上对OpenSSL进行的一些研究和测试表明,我们需要在T​​LS连接中包括SNI。当包含在内时,它可以在命令行中工作。

当尝试使用由我们的应用程序传递给libssl的ssl_set_tlsext_host_name设置SNI变量时,我们在应用程序中仍然失败,该变量是用C语言编写的,并且libssl作为共享对象库链接到。它建于几年前,历史记录表明我们正在使用OpenSSL 1.0.2h。

该应用程序目前可在RHEL4上运行,并且RH可获得并支持的最高RPM支持版本是0.9.8版本之一。我们将1.0.2h安装到单独的路径中,或从单独的源代码中编译它以将其链接到应用程序。建立的历史有点模糊。也许不相关,只是要注意。

我们可以引用TLS连接来与我们新版本的应用程序配合使用(不幸的是尚未准备好部署),它引用了RHEL 7上的OpenSSL 1.0.2k本地安装。

因此,尝试找出当前应用程序版本中缺少的内容。 OpenSSL更改日志表明ssl_set_tlsext_host_name在0.9版本后期和1.0早期版本中已实现。

感觉就像我们丢失了一个关键元素,或者呼叫格式在途中发生了改变。

希望有人可能有一个类似的例子或经验。

谢谢!

0 个答案:

没有答案