有没有一种更容易的方法来找出在构建openssl期间指定的选项,例如当时是否定义了OPENSSL_NO_SRTP? 我只能从:
openssl version -a
命令中闪烁有限的信息。但是,如果我只有二进制文件,是否有办法找出这些选项?此问题背后的原因是,如果未使用此选项编译openssl,则会引入一个漏洞“CVE-2014-3513”。openssl:如何找到openssl编译的配置选项
2
A
回答
1
如果OpenSLL编译与OPENSSL_NO_SRTP然后ssleay32.dll不包含SRTP supprt相关的功能:SSL_CTX_set_tlsext_use_srtp
,SSL_get_selected_srtp_profile
,SSL_set_tlsext_use_srtp
,SSL_get_srtp_profiles
。幸运的是,它们的名称都有“srtp”,因此您可以使用dumpbin来检查DLL是否包含这些函数。例如:
dumpbin.exe /EXPORTS ssleay32.dll | findstr /R /C:"srtp"
对我来说,它发现了这些功能,所以我OpenSSL的编译没有OPENSSL_NO_SRTP:
dumpbin.exe /EXPORTS ssleay32.dll | findstr /R /C:"srtp" 358 57 00026CD0 SSL_CTX_set_tlsext_use_srtp 357 AA 00026D00 SSL_get_selected_srtp_profile 360 B4 00026D10 SSL_get_srtp_profiles 354 E8 00026D40 SSL_set_tlsext_use_srtp
我希望帮助解决你的问题。
P.S. 不幸的是,据我所知,OpenSSL没有记录编译时间选项。
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
2
相关问题
- 1. 使用'shared'选项编译OpenSSL?
- 2. 如何编译OpenSSL for x64?
- 3. 是php配置选项--with-openssl需要?
- 4. Openssl编译错误
- 5. 如何编译OpenSSL的相对rpath的
- 6. 如何用新的OpenSSL库编译PHP
- 7. OpenSSL的1.0.0l编译错误
- 8. PHP与旧的OpenSSL编译
- 9. Openssl的SHA1编译问题
- 10. 如何在Beaglebone Black上编译openssl 1.0.2f?
- 11. 如何重新编译Ruby和OpenSSL?
- 12. G ++编译erro for openssl API
- 13. 使用SSLv3编译OpenSSL 1.1.0f
- 14. 为Android armv6编译OpenSSL FIPS
- 15. 在windows上编译OpenSSL 1.0.1
- 16. WINCE 6.0 Openssl编译错误
- 17. OpenSSL编译问题SSL_export_keying_material()
- 18. 交叉编译“OpenSSL”错误
- 19. 为Windows Phone 8.0编译OpenSSL
- 20. Libcurl OpenSSL未找到
- 21. 错误编译的OpenSSL /演示/ SSL/serv.cpp的OpenSSL
- 22. 如何在Ubuntu上将OpenSSL从OpenSSL 1.0.1f更新到OpenSSL 1.0.2g?
- 23. 找不到的OpenSSL/evp.h当我编译openssl_aes.c用gcc
- 24. 交叉编译,OpenSSL的/ crypto.h没有找到
- 25. 应用程序找不到用于编译库的OpenSSL
- 26. D8048:无法使用/ ZW选项编译C文件'openssl \ applink.c'
- 27. 我如何更改openssl配置?
- 28. 编译openssl失败,“/ usr/bin/ld:找不到-lz”
- 29. 什么是openssl -new选项?
- 30. 的OpenSSL的Windows的x64编译错误
谢谢。真正需要粗体的“无”。 :-) – Khanna111 2014-10-17 18:14:39
没问题,我认为“nm”会更容易使用:“nm -C.so | grep srtp” – sirgeorge 2014-10-17 23:29:14