是否有更简单的方法来确定构建openssl期间指定的选项,例如当时是否定义了OPENSSL_NO_SRTP?
我只能从以下方面了解有限的信息:
openssl版本-a
命令。但是,如果我只有二进制文件,有没有办法找出这些选项?这个问题背后的原因是存在一个漏洞" CVE-2014-3513"如果未使用此选项编译openssl,则会引入该文件。
答案 0 :(得分:5)
答案 1 :(得分:0)
如果使用 OPENSSL_NO_SRTP 编译 OpenSLL,则 ssleay32.dll 不包含与SRTP相关的功能:SSL_CTX_set_tlsext_use_srtp
,{ {1}},SSL_get_selected_srtp_profile
,SSL_set_tlsext_use_srtp
。幸运的是,他们都有" srtp"在他们的名字中,您可以使用 dumpbin 检查DLL是否包含这些功能。例如:
SSL_get_srtp_profiles
在我的情况下,它找到了这些函数,所以我的OpenSSL编译为,没有 OPENSSL_NO_SRTP :
dumpbin.exe /EXPORTS ssleay32.dll | findstr /R /C:"srtp"
我希望这有助于解决您的问题。
P.S。 不幸的是,据我所知,OpenSSL不记录编译时选项。
答案 2 :(得分:0)
感谢@sirgeorge的回答。我忘了将Linux指定为平台,因此Linux中的等效检查是:
$ objdump -f libssl.so -x | grep -i SRTP
0000000000000000 l df *ABS* 0000000000000000 d1_srtp.c
00000000002609e0 l O .data 0000000000000030 srtp_known_profiles
000000000003d100 g F .text 0000000000000012 SSL_set_tlsext_use_srtp
000000000003cb40 g F .text 0000000000000149 ssl_parse_serverhello_use_srtp_ext
000000000003d120 g F .text 0000000000000012 SSL_CTX_set_tlsext_use_srtp
000000000003ca90 g F .text 00000000000000ab ssl_add_serverhello_use_srtp_ext
000000000003ca50 g F .text 0000000000000029 SSL_get_srtp_profiles
000000000003ca80 g F .text 0000000000000008 SSL_get_selected_srtp_profile
000000000003cc90 g F .text 0000000000000128 ssl_add_clienthello_use_srtp_ext
000000000003cdc0 g F .text 0000000000000210 ssl_parse_clienthello_use_srtp_ext