CentOS 5.8执行yum操作报SSLError: unknown protocol问题求助
CentOS 5.8 yum SSLError: unknown protocol 修复方案
问题根源
CentOS 5.8自带的Python 2.4和M2Crypto库不支持现代TLS协议(如TLS1.1/TLS1.2),即使手动升级了OpenSSL,M2Crypto仍会链接系统旧版OpenSSL库或本身不兼容新协议,导致yum访问HTTPS源时握手失败。
修复方案
方案一:切换至HTTP归档源(最简便)
CentOS 5的官方源已迁移至vault仓库,且HTTP无需复杂SSL握手,步骤如下:
- 备份原有repo配置:
cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak - 替换repo文件中的HTTPS为HTTP,并指向vault地址:
sed -i 's/https:/http:/g' /etc/yum.repos.d/CentOS-Base.repo sed -i 's/mirror.centos.org\/centos\/5/vault.centos.org\/5.8/g' /etc/yum.repos.d/CentOS-Base.repo - 清理yum缓存并测试:
yum clean all yum install -y wget
方案二:重新编译M2Crypto链接新版OpenSSL(保留HTTPS)
若必须使用HTTPS源,需让M2Crypto链接已升级的OpenSSL 1.0.2:
- 安装编译依赖:
yum install -y python-devel gcc - 下载M2Crypto 0.22.6版本源代码(兼容Python2.4与OpenSSL1.0.2),解压后进入目录:
tar zxf M2Crypto-0.22.6.tar.gz cd M2Crypto-0.22.6 - 编译并安装,指定新版OpenSSL路径(假设OpenSSL1.0.2安装在
/usr/local/ssl):python setup.py build --openssl=/usr/local/ssl python setup.py install - 验证链接是否生效:
输出应指向ldd /usr/lib64/python2.4/site-packages/M2Crypto/_M2Crypto.so | grep ssl/usr/local/ssl/lib下的OpenSSL库。 - 清理缓存测试yum:
yum clean all yum update
方案三:强制yum使用TLSv1.0协议
若源服务器仍支持TLSv1.0,可通过配置强制yum使用该协议:
- 编辑
/etc/yum.conf,在[main]段添加:ssl_version=TLSv1 ssl_cipher_list=DEFAULT:!DH - 清理缓存并测试:
yum clean all yum install -y vim
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

