⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️
写功能的时候使用了一个
from werkzeug.security import generate_password_hash, check_password_hash
check_password_hash(admin.password, password)
检查密码是否匹配
然后遇到报错
File "/www/python/xpp/admin/api_admin.py", line 52, in login_admin
msg = func_admin.login_admin(name, password)
File "/www/python/xpp/admin/func_admin.py", line 42, in login_admin
if admin and check_password_hash(admin.password, password) and admin.state == 1:
File "/www/python/xpp/de30f4ed64a614089b1ecb0a6f039ac3_venv/lib/python3.9/site-packages/werkzeug/security.py", line 124, in check_password_hash
return hmac.compare_digest(_hash_internal(method, salt, password)[0], hashval)
File "/www/python/xpp/de30f4ed64a614089b1ecb0a6f039ac3_venv/lib/python3.9/site-packages/werkzeug/security.py", line 43, in _hash_internal
hashlib.scrypt(password, salt=salt, n=n, r=r, p=p, maxmem=maxmem).hex(),
AttributeError: module 'hashlib' has no attribute 'scrypt'
检查后发现openssl版本为OpenSSL 1.0.2k-fips 26 Jan 2017
有点低了
升级方案:
在 CentOS 7 上升级 OpenSSL 到更高版本(如 1.1.0 或以上)可能比较复杂,因为默认的 Yum 仓库中可能不包含这个版本。以下是手动升级 OpenSSL 的基本步骤:
首先,您需要从 OpenSSL 的官方网站下载所需版本的源代码。可以通过以下命令下载:
cd /usr/local/src
sudo wget https://www.openssl.org/source/openssl-1.1.1.tar.gz
这里以 OpenSSL 1.1.1 版本为例。请根据需要选择合适的版本。
下载完成后,解压源码:
sudo tar -zxf openssl-1.1.1.tar.gz
接着,编译并安装 OpenSSL:
cd openssl-1.1.1
sudo ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
sudo make
sudo make install
编译安装完成后,您需要配置系统使用新版本的 OpenSSL。首先,备份旧版本的 OpenSSL:
sudo mv /bin/openssl /bin/openssl.bak
sudo mv /usr/bin/openssl /usr/bin/openssl.bak
然后,创建新的 OpenSSL 链接:
sudo ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
sudo ln -s /usr/local/ssl/bin/openssl /bin/openssl
为了让系统识别新安装的库,您需要更新系统的库路径:
编辑 /etc/ld.so.conf
文件,添加新的 OpenSSL 库路径:
sudo echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
然后更新动态链接库:
sudo ldconfig -v
最后,验证新安装的 OpenSSL 版本:
openssl version
重启服务器, 验证
问题依旧,猜测是 宝塔面板的openssl 和 python 管理器里的虚拟环境的版本 不相通
。。。
继续折腾虚拟环境的openssl
没搞出来。。 有没有大牛?