在ubuntu环境下执行openssl编译和安装

这篇博客详细介绍了如何在Ubuntu 18.04上下载、编译和安装OpenSSL 1.1.1q版本。通过解压源码、配置、编译和安装,然后通过软链接替换旧版本并更新配置,确保新版本生效。最后,博主提供了代码示例,演示了如何在C++中使用OpenSSL进行文件MD5校验,并建议使用Clion进行代码编辑和测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考链接

下载

编译

  • 使用命令sudo tar -xvzf openssl-1.1.1q.tar.gz 解压。
  • 使用cd openssl-1.1.1q/进入目录
  • 使用./config生成MakeFile,不加任何参数,默认的安装位置为:/usr/local/bin/openssl

  • 使用 make 进行编译
  • 不放心的话可以使用make tset检查一下(可选步骤)
  • 使用sudo make install进行安装,这里一定要选择root用户的权限执行。 

 备份与替换

  • 到上一步openssl就算安装好了,但是还无法使用,需要通过软链接的方式将新旧版本就行替换,依次运行下列命令。

  •  sudo mv /usr/bin/openssl /usr/bin/openssl.old    //将旧版本的openssl进行备份
  • sudo ln -s /usr/local/bin/openssl /usr/bin/openssl    //将新版本的openssl进行软链接
  • cd /etc/   //进入etc目录
  • su     //下一步一定要切换到root用户
  • echo "/usr/local/lib" >> ld.so.conf    //将openssl的安装路径加入配置中
  • ldconfig  //重新加载配置
  • 使用openssl进行验证

补充

代码 

#include "openssl/md5.h"
#include <iostream>
#include <fstream>
#include <iomanip>

//#define MAX_DATA_BUFF = 1024;
//#define MD5_LENGTH = 16
char* get_file_md5(const char * path){
    char *out = (char *)malloc(33); //输出
    std::ifstream file(path,std::ios::in|std::ios::binary);//打开文件
    unsigned char MD5_result[16];
    do {
        if(file.fail()){
            std::cout<<"open file failure!"<<std::endl;
            break;
        }
        MD5_CTX md5_ctx;
        MD5_Init(&md5_ctx);
        char data_Buff[1024];
        while (!file.eof()){
            file.read(data_Buff,1024);//读取文件
            int length = file.gcount();
            if (length){
                MD5_Update(&md5_ctx,data_Buff,length);//将当前文件加入并且更新MD5
            }
        }
        MD5_Final(MD5_result,&md5_ctx); //获取MD5
        for (int i = 0; i < 16; i++) {  //将md5以16进制输出
            snprintf(&(out[i*2]),16*2,"%02x",(unsigned int)MD5_result[i]);
        }
    }while (false);
    return out;
}

int main(){
    std::string original_backup_file = "/home/chy-cpabe/test.txt";
    char *output = get_file_md5(original_backup_file.c_str());//original_backup_file为文件的名字
    std::cout << "md5:"<< output << std::endl;
    free(output);
}

  •  将执行结果和使用命令行计算得到的结果进行对比验证

 

 

<think>嗯,用户想在Ubuntu系统上安装OpenSSL库,我应该怎么回答呢?首先得回忆一下安装步骤。记得之前有看过几个引用,里面提到不同的方法。比如引用[3]说要去官网下载源码,然后编译安装。步骤包括下载源码包,移动到/usr/local目录,解压,然后执行config、make、make install。不过用户可能更想要简单的方法,比如用apt安装,但有时候需要特定版本的话可能还是要源码编译。 然后,引用[1][2]提到用wget下载压缩包,配置安装路径,比如--prefix=/usr/local/openssl,这样自定义路径可能适合需要特定安装位置的情况。不过对于大部分用户来说,使用系统自带的包管理器apt可能更方便,比如sudo apt install openssl,这样自动处理依赖安装。 需要考虑用户的需求,如果只是安装最新稳定版,apt足够;如果需要特定版本或自定义配置,就得源码安装。还要提醒用户安装后验证版本,用openssl version检查。可能还要添加环境变量,特别是如果安装到非标准路径的话,比如在.bashrc里添加PATHLD_LIBRARY_PATH。 用户可能遇到的问题包括依赖项缺失,比如make的时候报错,这时候需要安装build-essential之类的包。还有权限问题,可能需要sudo。另外,编译安装后可能需要更新动态链接库,执行ldconfig。 还要生成相关问题,比如如何安装特定版本,或者如何配置环境变量,或者安装后的验证步骤。这些能帮助用户进一步解决问题。不过要确保回答清晰,分步骤说明两种方法,让用户选择适合自己情况的方式。</think>### 在 Ubuntu 系统中安装 OpenSSL 库的步骤 以下是两种常见安装方式,可根据需求选择: --- #### **方法一:通过 apt 安装(推荐简单快捷)** 1. **更新软件包列表** ```bash sudo apt update ``` 2. **安装 OpenSSL开发文件** ```bash sudo apt install openssl libssl-dev ``` - `openssl` 包含命令行工具 - `libssl-dev` 提供开发头文件静态库[^3] 3. **验证安装** ```bash openssl version ``` 若显示版本号(如 `OpenSSL 3.0.2`),则安装成功。 --- #### **方法二:源码编译安装(适合自定义版本或路径)** 1. **安装依赖工具** ```bash sudo apt install build-essential wget ``` 2. **下载源码包** - 从官网获取最新版本链接[^2],例如: ```bash wget https://www.openssl.org/source/openssl-3.0.12.tar.gz ``` 3. **解压并进入目录** ```bash tar -xzf openssl-3.0.12.tar.gz cd openssl-3.0.12 ``` 4. **配置安装路径** ```bash ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl ``` 若需启用特定功能(如 `zlib` 压缩),需额外安装依赖并添加参数[^1]。 5. **编译安装** ```bash make # 编译 sudo make install ``` 6. **配置环境变量** 在 `~/.bashrc` 末尾添加: ```bash export PATH="/usr/local/openssl/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/openssl/lib:$LD_LIBRARY_PATH" ``` 加载配置: ```bash source ~/.bashrc ``` 7. **验证自定义安装** ```bash /usr/local/openssl/bin/openssl version ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值