我有一个使用openssl连接到不同计算机上的服务器的应用程序。在我的Ubuntu机器上的一个案例中,应用程序获得安全连接没有问题。但是,当我为目标嵌入式主板重新编译相同的应用程序并运行它时,我收到此错误:
# ./client3 192.168.1.99
Enter PEM pass phrase:
connecting to 192.168.1.99:16001
** client3.c:77 Error connecting SSL object
1024:error:04091068:rsa routines:INT_RSA_VERIFY:bad signature:rsa_sign.c:278:
1024:error:1408D07B:SSL routines:ssl3_get_key_exchange:bad signature:s3_clnt.c:2004:
在这两种情况下,该应用都使用相同的私钥和证书。
作为测试,我在两个平台上使用s_client来查看它是否是应用程序的问题,并且它也在嵌入式目标上出现相同的错误但在Ubuntu机器上建立连接....就像应用程序一样
我在wireshark跟踪中观察到的一点是,根据应用程序运行的平台,在“客户端Hello”交换中,该应用程序在Ubuntu机器上宣传的密码套件比嵌入式目标应用程序要小得多。因此,服务器在两种情况下都选择不同的密码套件。这让我很困惑,不确定它是否与我的问题有关。
值得注意的是,Ubuntu机器上的openssl版本是可用的平台,比嵌入式目标板的版本旧。
不使用TLSv2。
感谢任何帮助或推特如何调试。
答案 0 :(得分:0)
问题解决了。关闭了解决问题的编译器优化。