如何确定openssl库的版本
How to determine version of openssl library?
我有一个预构建的OpenSSL库(libssl.a和libcrypto.a),用于我的C++应用程序。我不知道OpenSSL库的版本。
有没有办法从这些预先构建的库中获取版本号?
库中有一个字符串,包含名为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]+"
您可以通过阅读以下内容以编程方式完成此操作:
OPENSSL_VERSION_NUMBER(3)
和
SSLeay_version(3)
基本上,您需要使用以下功能:
SSLeay()
SSLeay_version()
过滤可能并不总是有效。你可以做
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
我需要https://stackoverflow.com/a/26635393/597742这将在没有安装CCD_ 7的系统上工作。它的不同之处在于,它似乎值得作为自己的答案发布:
grep --text -o 'OpenSSL [[:digit:]][^ ]*' /file/to/check
--text
允许直接检查二进制文件,-o
通过只打印匹配的文本来解决缺少行分隔符的问题。
这个答案和基于strings
的答案都值得注意的一点是:除了检查libssl
或libcrypto
的OpenSSL版本很有用之外,它们还可以检查静态链接二进制文件中的OpenSSL版。
在Debian上,您可能会询问包管理器:
# apt list -a openssl
Listing... Done
openssl/stable-security,now 1.1.1n-0+deb11u4 amd64 [installed,automatic]
openssl/stable 1.1.1n-0+deb11u3 amd64
在RedHat linux上询问其软件包管理器:
$ dnf list --all openssl
Last metadata expiration check: 0:01:53 ago on Mon 13 Mar 2023 01:14:50 PM UTC.
Installed Packages
openssl.x86_64 1:1.1.1k-6.el8_5 @Common
相关文章:
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 如何在openssl-ecc中获取十六进制格式的私钥
- 导入库可以跨dll版本工作吗
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- 在clang++预处理器中确定gcc工具链版本
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 不同的Visual Studio版本中缺少.dll
- 用符号版本替换对函数的所有调用
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- OpenSSL TLS服务器-使用客户端证书白名单
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- 我需要分发哪些版本的可再分发文件
- CV_OCL_RUN宏如何在OpenCV(版本3.4.5)的goodFeaturesToTrack实现中工作?
- find_package(OpenSSL)找不到特定的libssl版本
- C++在哪里可以获得sha256 openssl的代码版本
- c++ Boost asio (OpenSSL)获取密码和TLS/SSL版本的活动连接
- 如何确定openssl库的版本