穆晶波 2025-07-04 19:10 采纳率: 98.6%
浏览 224
已采纳

问题:Ubuntu 22.04如何正确安装libcrypto.so.1.1?

在使用 Ubuntu 22.04 时,许多用户会遇到“libcrypto.so.1.1 无法找到”或“缺失”的问题,尤其是在运行某些依赖 OpenSSL 1.1 的应用程序或服务时。Ubuntu 22.04 默认使用 OpenSSL 3.0,因此 libcrypto.so.1.1 并不在默认仓库中提供。那么,如何正确安装 libcrypto.so.1.1?常见的解决方法包括:从旧版本仓库手动安装 libssl1.1 包、通过源码编译安装 OpenSSL 1.1,或者使用 PPA 源来获取兼容版本。然而,这些操作可能带来系统兼容性风险或依赖冲突。因此,关键在于选择安全、稳定且不影响系统整体稳定性的解决方案。本文将深入探讨几种常见方法,并分析其优缺点,帮助你正确完成 libcrypto.so.1.1 的安装。
  • 写回答

1条回答 默认 最新

  • fafa阿花 2025-07-04 19:10
    关注

    Ubuntu 22.04 下解决“libcrypto.so.1.1 无法找到”问题的深度解析

    在 Ubuntu 22.04 中,由于系统默认使用 OpenSSL 3.0,许多依赖于 OpenSSL 1.1 的应用程序或服务会提示“libcrypto.so.1.1 无法找到”或“缺失”的错误。本文将深入探讨几种常见的解决方案,并分析其优缺点。

    一、问题背景与成因分析

    Ubuntu 22.04 默认安装的是 OpenSSL 3.0,其对应的库文件为 libcrypto.so.3libssl.so.3。而一些老旧的应用程序(如某些版本的 Node.js、Erlang、旧版数据库驱动等)仍然依赖 OpenSSL 1.1 的 API 接口,因此需要 libcrypto.so.1.1 库支持。

    • 典型错误信息:
      • error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
      • failed to load module 'openssl': libcrypto.so.1.1 not found

    二、常见解决方案及其技术实现

    1. 从旧版本仓库手动安装 libssl1.1 包

    这是最直接的方法之一,通过下载适用于 Ubuntu 20.04 的 libssl1.1 包进行安装。

    wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-2ubuntu4_amd64.deb
    sudo apt install ./libssl1.1_1.1.1f-2ubuntu4_amd64.deb
    优点缺点
    操作简单,快速部署可能造成依赖冲突;不适用于长期维护场景

    2. 使用 PPA 源安装兼容版本

    部分第三方开发者维护了兼容 OpenSSL 1.1 的 PPA 源,例如:

    sudo add-apt-repository ppa:drizzle/dropbox-openssl11
    sudo apt update
    sudo apt install libssl1.1

    注意:使用非官方 PPA 存在安全风险,建议确认源的可信度后再执行。

    3. 源码编译安装 OpenSSL 1.1.x

    对于希望完全控制环境或生产环境要求稳定的用户,可选择从源码编译 OpenSSL 1.1。

    cd /usr/local/src
    wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
    tar -xzvf openssl-1.1.1w.tar.gz
    cd openssl-1.1.1w
    ./config --prefix=/usr/local/openssl-1.1 --openssldir=/usr/local/openssl-1.1
    make
    sudo make install

    随后创建软链接:

    sudo ln -s /usr/local/openssl-1.1/lib/libcrypto.so.1.1 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
    sudo ldconfig
    优点缺点
    灵活可控,适用于定制化需求编译过程复杂,需处理路径和权限问题

    三、系统兼容性与安全性考量

    在 Ubuntu 系统中,OpenSSL 是一个核心组件,多个系统服务和应用都依赖它。随意更换或降级可能引发以下问题:

    • 系统更新失败
    • 其他依赖 OpenSSL 的服务崩溃
    • 引入潜在的安全漏洞(尤其在未打补丁的 OpenSSL 版本中)

    因此,推荐优先考虑:

    1. 升级目标应用以兼容 OpenSSL 3.0
    2. 使用容器(Docker)隔离运行旧版本 OpenSSL 的应用
    3. 仅在必要时安装兼容库,并尽量使用本地安装方式而非全局替换

    四、进阶方案:使用 Docker 容器隔离环境

    为了彻底避免对主系统的干扰,可以将依赖 OpenSSL 1.1 的应用部署在 Docker 容器中。

    docker run -it --rm ubuntu:20.04 bash

    在容器内安装所需软件包即可获得完整的 OpenSSL 1.1 环境,同时不影响宿主机。

    graph TD A[宿主机 Ubuntu 22.04] --> B[Docker 容器] B --> C[Ubuntu 20.04 镜像] C --> D[安装 libssl1.1] D --> E[运行依赖 OpenSSL 1.1 的应用]
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 7月4日