• 【Linux】源码编译安装openssl


    版本:OpenSSL 3.0.11 19 Sep 2023 (Library: OpenSSL 3.0.11 19 Sep 2023)

    系统:centos 7.6

    步骤
    下载安装包
    wget https://www.openssl.org/source/openssl-3.0.11.tar.gz
    
    • 1

    我是下载到 /home/openssl 下面

    解压并编译
    解压安装包
    tar -zxvf openssl-3.0.11.tar.gz
    
    cd openssl-3.0.11.tar.gz
    
    • 1
    • 2
    • 3
    设定OpenSSL安装路径
     ./config --prefix=/usr/local/openssl
     ./config -t
    
    • 1
    • 2

    可能出现问题

    Can't locate IPC/Cmd.pm in @INC (@INC contains: /home/openssl/openssl-3.0.11/util/perl /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 . /home/openssl/openssl-3.0.11/external/perl/Text-Template-1.56/lib) at /home/openssl/openssl-3.0.11/util/perl/OpenSSL/config.pm line 19.
    BEGIN failed--compilation aborted at /home/openssl/openssl-3.0.11/util/perl/OpenSSL/config.pm line 19.
    Compilation failed in require at /home/openssl/openssl-3.0.11/Configure line 23.
    BEGIN failed--compilation aborted at /home/openssl/openssl-3.0.11/Configure line 23.
    
    • 1
    • 2
    • 3
    • 4

    这个错误提示表明在配置 OpenSSL 时缺少了 IPC::Cmd 模块。IPC::Cmd 模块是 Perl 的一个扩展模块,它用于在 Perl 脚本中执行系统命令。

    yum install perl-IPC-Cmd
    
    • 1
    编译

    需要有 gcc

    make && make install
    
    • 1
    查看依赖库
    cd /usr/local/openssl/bin
    
    ldd openssl
    
    • 1
    • 2
    • 3

    返回以下结果

    linux-vdso.so.1 =>  (0x00007ffe44d8c000)
    libssl.so.3 => not found
    libcrypto.so.3 => not found
    libdl.so.2 => /lib64/libdl.so.2 (0x00007ffbad08e000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffbace72000)
    libc.so.6 => /lib64/libc.so.6 (0x00007ffbacaa4000)
    /lib64/ld-linux-x86-64.so.2 (0x00007ffbad292000)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注意 not found 的两行,意思是 libssl.so.3 和 libcrypto.so.3 找不到所依赖的库文件,需要手动去连接库文件,执行如下指令:

    ln -s /usr/local/openssl/lib/libssl.so.3 /usr/lib64/libssl.so.3
    ln -s /usr/local/openssl/lib/libcrypto.so.3 /usr/lib64/libcrypto.so.3
    
    • 1
    • 2

    千万注意,你的版本不同,这边确实的动态库可能也会不同,不过都是这两个文件确实,看好版本就行

    再执行

    ldd openssl
    
    • 1

    返回以下结果

    linux-vdso.so.1 =>  (0x00007fffeb1ea000)
    libssl.so.3 => /lib64/libssl.so.3 (0x00007f2e79039000)
    libcrypto.so.3 => /lib64/libcrypto.so.3 (0x00007f2e789c6000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f2e787c2000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2e785a6000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f2e781d8000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f2e792de000)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这样就 ok 了

    配置环境变量
    sudo vim /etc/profile
    
    #在文件的末尾添加
    export OPENSSL_PATH=/usr/local/openssl/bin
    export PATH=$OPENSSL_PATH:$PATH:$HOME/bin
    #保存并退出文件
    
    source /etc/profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    检查
    openssl version -a
    
    • 1

    会出现下面结果

    OpenSSL 3.0.11 19 Sep 2023 (Library: OpenSSL 3.0.11 19 Sep 2023)
    built on: Fri Oct 20 07:59:03 2023 UTC
    platform: linux-x86_64
    options:  bn(64,64)
    compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
    OPENSSLDIR: "/usr/local/openssl/ssl"
    ENGINESDIR: "/usr/local/openssl/lib64/engines-3"
    MODULESDIR: "/usr/local/openssl/lib64/ossl-modules"
    Seeding source: os-specific
    CPUINFO: OPENSSL_ia32cap=0xfffa32034f8bffff:0x18d19e27eb
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    这样就 ok 了

  • 相关阅读:
    在Excel中使用SQL
    dubbo3 遇坑小结
    MongoDB 数据库(一):MongoDB的介绍与安装
    【测开求职】面试题:计算机网络 精简版整理
    vue3+scss开启写轮眼
    Linux学习第21天:Linux内核定时器驱动开发: 流淌的时间长河
    AJAX之GET与POST
    thinkphp:查询本周中每天中日期的数据,查询今年中每个月的数据,查询近五年每年的总数据
    电路的频率响应
    Spring Boot 配置文件
  • 原文地址:https://blog.csdn.net/weixin_40242845/article/details/133951840