pyca/cryptography如何嵌入OpenSSL依赖?EL8版本显示异常解惑
问题解析:EL8系统中cryptography v42返回OpenSSL 3.2.1的原因
cryptography Wheel包自带独立OpenSSL库
pyca/cryptography从较新版本开始,发布的manylinux标准Wheel包不再依赖系统自带的OpenSSL,而是直接内置了编译好的OpenSSL二进制库。这么做是为了规避不同Linux发行版(比如EL8和EL9)的OpenSSL版本差异,保证库在各种环境下的兼容性。你安装的v42版本就属于这类,它内置了OpenSSL 3.2.1,所以调用cryptography.hazmat.backends.openssl.backend.openssl_version_text()时,返回的是这个内置库的版本,和EL8系统默认的1.1.1k完全无关。找不到动态库的原因
这些内置的二进制库并非直接放在安装目录顶层,而是被封装到了更深的子目录的.so文件中。你可以用以下命令查找:find $(pip3 show cryptography | grep Location | cut -d' ' -f2) -name "*.so"执行后就能找到类似
cryptography/hazmat/bindings/_openssl.abi3.so的动态链接库文件,实际的OpenSSL代码就打包在这里面。关于运行时版本的说明
文档里说的“运行时版本”指的是cryptography当前实际加载使用的OpenSSL版本,这里因为用了自带的库,所以就是内置的3.2.1,和编译Wheel时用的版本一致,也和系统的OpenSSL版本无关。
内容的提问来源于stack exchange,提问作者IvanR
相关产品推荐
相关产品推荐

