openssl:如何找到openssl编译的配置选项

时间:2014-10-16 19:02:25

标签: openssl

是否有更简单的方法来确定构建openssl期间指定的选项,例如当时是否定义了OPENSSL_NO_SRTP? 我只能从以下方面了解有限的信息:
openssl版本-a
命令。但是,如果我只有二进制文件,有没有办法找出这些选项?这个问题背后的原因是存在一个漏洞" CVE-2014-3513"如果未使用此选项编译openssl,则会引入该文件。

3 个答案:

答案 0 :(得分:5)

您可以通过version command获取有关已安装openssl的大部分(全部?)配置信息。特别是,

openssl version -f

将列出在构建时指定的所有编译器标志。

答案 1 :(得分:0)

如果使用 OPENSSL_NO_SRTP 编译 OpenSLL,则 ssleay32.dll 不包含与SRTP相关的功能:SSL_CTX_set_tlsext_use_srtp,{ {1}},SSL_get_selected_srtp_profileSSL_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