升级openssl影响

news/2025/9/28 18:44:08/文章来源:https://www.cnblogs.com/tiantao36/p/19117389

升级openssl影响

在 CentOS(或者 RHEL 系)里,要判断 哪些软件依赖 OpenSSL,可以用几个不同层级的办法:


1️⃣ 查询已安装软件包依赖(RPM 层面)

# 哪些包依赖 openssl-libs
rpm -q --whatrequires openssl-libs# 或者
repoquery --whatrequires openssl-libs
  • openssl-libs 是 OpenSSL 的核心共享库(libcrypto.solibssl.so)。

  • 输出结果会列出所有依赖它的 RPM 包(如 curlgitpythonnginx 等)。


2️⃣ 查询某个二进制是否链接了 OpenSSL(动态库层面)

ldd $(which curl) | grep ssl
ldd $(which python3) | grep ssl
ldd $(which nginx) | grep ssl
  • 如果能看到 libssl.solibcrypto.so,说明这个程序运行时会调用 OpenSSL。

也可以批量扫描:

for bin in $(which curl git ssh nginx 2>/dev/null); doecho "[$bin]"ldd $bin | grep ssl || echo "  -> no ssl linked"
done

3️⃣ 运行时调用层面(动态确认)

如果你想确认哪些进程实际在使用 OpenSSL,可以:

lsof | grep libssl

会列出哪些正在运行的进程打开了 libssl.so.*


4️⃣ 源码/构建依赖层面

有些软件虽然安装时没直接依赖 OpenSSL RPM,但编译时会选择:

  • OpenSSL(常见:curl、git、nginx、postgres)

  • GnuTLS 或 NSS 作为替代

可以查某个包的编译选项:

rpm -qi <package>
rpm -ql <package> | grep ssl

⚡ 总结

  • 系统级依赖rpm -q --whatrequires openssl-libs

  • 二进制级依赖ldd /path/to/bin | grep ssl

  • 运行时依赖lsof | grep libssl


好问题 👍,你关心的是 C / Go 编译后的二进制,OpenSSL 升级后是否会因 ABI / API 不兼容而崩溃
可以从几个角度来判断:


1️⃣ 区分编译时依赖类型

C 程序

  • 静态编译(static link)

    • 如果编译时把 libssl.alibcrypto.a 链接进二进制 → 不依赖系统升级,不受影响。

    • 判断方法:

      ldd ./mybin | grep ssl
      

      如果没显示 libssl.so / libcrypto.so,那就是静态编译(或完全没用到 OpenSSL)。

  • 动态编译(dynamic link)

    • 如果链接了 libssl.solibcrypto.so,升级 OpenSSL 可能导致:

      • ABI 变动:符号(函数、变量)不兼容 → 程序启动时报 undefined symbol

      • API 行为变更:函数签名相同但逻辑不同 → 程序运行中出错。

    • 判断方法:

      objdump -p ./mybin | grep NEEDED | grep ssl
      nm -D ./mybin | grep SSL_
      

      能看到 libssl.so.x 就是动态依赖。


Go 程序

Go 本身默认 不依赖系统 OpenSSL,而是使用 标准库 crypto/tls(纯 Go 实现)。
但以下情况会依赖 OpenSSL:

  • 使用了 cgo 调用 OpenSSL 库(如 github.com/spacemonkeygo/openssl

  • 用了 go-openssl 或绑定了 libssl 的包

判断方法:

ldd ./my-go-bin | grep ssl
  • 没有 → 说明不依赖系统 OpenSSL(安全)

  • 有 → 说明 cgo 链接了 OpenSSL,升级后可能受影响


2️⃣ 判断兼容性风险

  • 小版本升级(如 1.1.1k → 1.1.1w)

    • ABI 稳定,不会破坏动态依赖。

  • 跨大版本升级(如 1.0.2 → 1.1.1 或 1.1.1 → 3.x)

    • ABI / API 都会变,很多老二进制会直接崩溃(undefined symbol: SSLv23_client_method 等)。


3️⃣ 验证是否安全运行

在升级前,可以做两种测试:

方法 A:用 ldd 验证

ldd ./mybin | grep ssl

看依赖的具体 libssl.so 版本,例如:

libssl.so.1.1 => /lib64/libssl.so.1.1
  • 如果新系统没有这个 so 版本 → 程序会直接起不来。

  • 如果新版本提供兼容符号链接(例如 libssl.so.3 软链到 libssl.so.1.1) → 可能还能跑,但要测试。


方法 B:在新环境运行测试

最靠谱的方式:

  1. 在测试机 / 容器里安装升级后的 OpenSSL

  2. 直接运行你的二进制,看是否报错

    ./mybin
    
  3. 如果报错,典型现象:

    ./mybin: symbol lookup error: ./mybin: undefined symbol: SSL_library_init
    

4️⃣ 建议的检查脚本

我可以给你写一个小脚本,自动检测目录下所有二进制:

#!/bin/bash
for bin in $(find . -type f -perm -111); dodeps=$(ldd $bin 2>/dev/null | grep ssl)if [ -n "$deps" ]; thenecho "[可能依赖 OpenSSL] $bin"echo "$deps"fi
done

这样能快速列出所有依赖 OpenSSL 的程序,升级前后跑一下对比。


总结

  • C 程序:看是动态还是静态链接,动态依赖要特别小心跨大版本升级。

  • Go 程序:默认不依赖 OpenSSL,除非用了 cgo 封装库。

  • 判断方法lddobjdump -pnm -D

  • 最终验证:在新 OpenSSL 环境实际跑一遍。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day23抽象类

package oop1.Demo8;//抽象类中,所由继承了它的子类,必须要实现它的方法~除非子类也是抽象类,那就继续套娃 public class A extends Action{@Overridepublic void dosomething() {} }package oop1.Demo8;//抽象类 …

陕西正天建设有限公司网站可以自己做网站赚钱吗

在宝塔面板环境下安装nps服务端 一、所需环境二、开始安装三、打开nps控制台四、更改默认账号密码和连接秘钥五、反向代理挂载SSL证书 一、所需环境 阿里云轻应用服务器&#xff08;选择宝塔应用镜像&#xff09;域名&#xff08;最好也是阿里注册的域名&#xff09;对应的ssl…

做影视网站犯法吗不用wordpress 知乎

总结&#xff1a; 初级&#xff1a;简单修改一下超参数&#xff0c;效果一般般但是够用&#xff0c;有时候甚至直接不够用 中级&#xff1a;optuna得出最好的超参数之后&#xff0c;再多一些epoch让train和testloss整体下降&#xff0c;然后结果就很不错。 高级&#xff1a;…

完整教程:开源的 CSS 动画库

完整教程:开源的 CSS 动画库pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

ES 是否有类似mysql explain的语句诊断用法

目录一、explain API:分析查询匹配与索引使用1. 基本用法方式1:查询时添加 explain=true方式2:针对单个文档分析(推荐)2. 核心返回结果解读二、profile API:分析查询执行性能1. 基本用法2. 核心返回结果解读三、…

让每次语音唤醒都可靠,公牛沐光重构可观测体系

本文详细介绍了公牛沐光团队如何从开源监控方案 SkyWalking 成功迁移到阿里云 ARMS,构建起一套集观测、追踪、日志分析与智能告警于一体的全栈式可观测平台的实践历程。作者:公牛集团,周施乐 王雷 欧阳绩新;阿里云…

【2025-09-27】连岳摘抄

23:59自信与骄傲有异:自信者常沉着,而骄傲者常浮扬。——梁启超高三可能是人生压力最大的一年。高三生身体上发育成熟了,但大脑还没有,不能很好地控制自己的情绪。压力巨大与大脑未成熟,这对矛盾造成高三生容易暴…

第三周预习作业(AI)

第三周预习作业(AI)20231406王浩霖《密码系统设计》第三周预习报告 学习内容 《嗨翻C语言》第4章函数的使用与定义 参数传递与返回值 变量的作用域 头文件与多文件编程《Windows C/C++加密解密实战》第4章重点4.2, 4…

Python 爬虫 HTTPS 实战,requests httpx aiohttp 抓取技巧、证书问题与抓包调试全流程 - 教程

Python 爬虫 HTTPS 实战,requests httpx aiohttp 抓取技巧、证书问题与抓包调试全流程 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !imp…

网站建设中图片多少钱jsp网站开发 心得

Flask介绍 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架&#xff0c;对于Werkzeug本质是Socket服务端&#xff0c;其用于接收http请求并对请求进行预处理&#xff0c;然后触发Flask框架&#xff0c;开发人员基于Flask框架提供的功能对请求进…

Codeforces 补题笔记

发现之前几乎所有的 Codeforces 场都是只打不补,意识到了只打不补本质上无任何提升的事实/ll Codeforces Round 1048 (Div. 2) 补题笔记

使用 Python 基于Ollama构建个人私有知识库(AI生成)

使用 Python 基于 Ollama 构建个人私有知识库是一个非常实用的项目,可以实现本地化、隐私安全的文档问答系统。以下是完整的路径和步骤,帮助你从零开始搭建一个基于 Ollama 的本地知识库系统。🌟 目标 构建一个本地…

合肥网络公司seo建站淮北seo

[背景简介]MySQL是一种开放源代码的关系型数据库管理系统(RDBMS)&#xff0c;因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下&#xff0c;MySQL是管理内容最好的选择。mysql虽然功能未必很强大&#xff0c;但因为它的开源、广泛传播&#xf…

Codeforces Round 1048 (Div. 2) 补题笔记

2A 略 2B 经典的一类题,选择一个顺序(一般是删除)最大/小化答案,这种一般都是正/逆序直接贪心就对了。 2C 简单但很好的题,提示我们瞪不出来,可以数学化一下题意,可能更容易意识到操作的本质。 2D(upsolved) …

泰州市建设监理协会网站仙桃哪里做网站

管理的技巧就是通过其他人实现你的工作目标。 写作的技巧就是创造一个能够激发其他人进行思考的环境。 需要有一个激发人们创造力的体系。 团队成员优势无补带来的威力。 让成员认为他所做的是他想做的事情。 雕塑就是把隐藏在石头里的形象挖掘出来。转载于:https://www.cnblog…

【RabbitMQ】消息可靠性保障

本章目标掌握生产者确认(Publisher Confirms)机制,确保消息到达Broker。深入理解消费者确认(Consumer Acknowledgments)的最佳实践。学习死信队列(Dead Letter Exchange, DLX)处理失败消息。实现完整的消息可靠…

CPU 测试脚本

CPU 测试脚本Posted on 2025-09-28 18:23 大势趋007 阅读(0) 评论(1) 收藏 举报cpu 测试记录#!/bin/bash# 冒泡排序算法测试 - CPU负载测试 # 兼容旧版本Bashbubble_sort() {local array_name=$1eval "local…

Day23static详解

static修饰德成员变量,属于类的本身,被该类德所有实例共享,在类中可以通过类名直接访问,再导入包时打破必须通过类名访问静态成员的规则,将指定的静态成员直接引入当前类的作用域 package oop1.Demo7; //被fianl定…

11.prometheus监控之黑盒(blackbox)监控

一、黑盒监控"白盒监控"--需要把对应的Exporter程序安装到被监控的目标主机上,从而实现对主机各种资源及其状态的数据采集工作。但是由于某些情况下操作技术或其他原因,不是所有的Exporter都能部署到被监控…