Как определить версию библиотеки OpenSSL?

У меня есть встроенная библиотека OpenSSL (libssl.a и libcrypto.а), которые используются для моего приложения c++. Я не знаю версию библиотеки OpenSSL.

есть ли способ получить номер версии из этих встроенных библиотек?

5 ответов


вы можете сделать это программно, прочитав следующее:

и

в основном, вам нужно будет использовать следующие функции:

  • SSLeay()
  • SSLeay_version()

в библиотеке есть строка, содержащая сведения о версии под названием SSLEAY_VERSION - это выглядит так:

  • OpenSSL 0.9.5a 1 Apr 2000
  • OpenSSL 1.0.1e-fips 11 Feb 2013

вы можете найти это в двоичной библиотеке, используя строки и grep:

strings libcrypto.so | grep "^OpenSSL \S\+ [0-9]\+ \S\+ [0-9]\+"

вы можете использовать следующие:

strings libssl.so | grep "^OpenSSL \S\+ [0-9]\+ \S\+ [0-9]\+"

ну, фильтрация может не всегда работать. Вы могли бы сделать

strings libssl.so | grep "^OpenSSL"
OpenSSLDie
OpenSSL 1.0.2n  7 Dec 2017

strings libcrypto.so | grep "^OpenSSL"
OpenSSLDie
OpenSSL_add_all_ciphers
OpenSSL_add_all_digests
OpenSSL 1.0.2n  7 Dec 2017
OpenSSL HMAC method
OpenSSL EC algorithm
OpenSSL RSA method
OpenSSL DSA method
OpenSSL ECDSA method
OpenSSL DH Method
OpenSSL X9.42 DH method
OpenSSL PKCS#3 DH method
OpenSSL ECDH method
OpenSSL 'dlfcn' shared library method
OpenSSL default
OpenSSL default user interface
OpenSSL CMAC method

вы также можете использовать :

openssl version -a

см. ссылку по адресу:https://linux.die.net/man/1/version