linux系统openssl的C++开发环境搭建

这篇具有很好参考价值的文章主要介绍了linux系统openssl的C++开发环境搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


在Linux上进行OpenSSL的C++开发,你需要安装OpenSSL库并且在编译时链接该库。以下是在Linux环境中搭建基础开发环境的步骤:

一、OpenSSL动态编译开发

1.1 安装OpenSSL库

在终端中执行以下命令来安装OpenSSL开发包:

sudo apt-get update
sudo apt-get install libssl-dev

这将会安装OpenSSL的开发头文件和库文件,使你能够在C++程序中使用OpenSSL功能。
linux系统openssl的C++开发环境搭建,# openssl开发,ssl,c++,linux,网络安全,密码学

1.2 创建C++源代码文件

创建一个新的C++源代码文件,比如 main.cpp

#include <iostream>
#include <openssl/evp.h>
#include <openssl/rand.h>

int main() {
    std::cout << "OpenSSL C++ Development Environment is set up!" << std::endl;
    return 0;
}

这是一个简单的示例,用于验证你的开发环境是否设置成功。

1.3 编译C++程序

在终端中使用g++编译器编译你的C++程序,并且链接OpenSSL库。假设你的源代码文件名为 main.cpp,执行以下命令:

g++ -o main main.cpp -lssl -lcrypto

这个命令将编译 main.cpp 文件并将生成的可执行文件命名为 main,同时链接了 OpenSSL 库。

1.4 运行程序

在终端中运行你的可执行文件:

./main

如果一切设置正确,你应该看到输出:OpenSSL C++ Development Environment is set up!
linux系统openssl的C++开发环境搭建,# openssl开发,ssl,c++,linux,网络安全,密码学

现在,你已经成功搭建了一个基础的OpenSSL C++开发环境。你可以在 main.cpp 文件中继续添加你的代码,包括使用OpenSSL进行加密、解密、数字签名等操作。

二、OpenSSL静态编译开发

有时候我们为了不依赖openssl动态库编译,因为linux系统中不一定openssl

2.1 OpenSSL下载源文件

下载地址:https://www.openssl.org/source/
我们下载3.2版本

wget https://www.openssl.org/source/openssl-3.2.0-alpha2.tar.gz

linux系统openssl的C++开发环境搭建,# openssl开发,ssl,c++,linux,网络安全,密码学

2.2 编译OpenSSL

  • 环境安装
sudo apt install g++
  • 解压压缩包
    将下载的源代码压缩包解压到你的开发环境中。
    tar -zxvf openssl-3.2.0-alpha2.tar.gz
    
  • 配置编译
    1. 在配置 OpenSSL 编译选项时,确保使用 no-shared 选项来生成静态链接库。
    ./config no-shared --prefix=/home/arv000/openssl
    

linux系统openssl的C++开发环境搭建,# openssl开发,ssl,c++,linux,网络安全,密码学

2. 这里的 --prefix 参数指定了你希望 OpenSSL 安装的路径。请将其替换为你希望的安装路径。
  • 编译安装
make -j16
make install

linux系统openssl的C++开发环境搭建,# openssl开发,ssl,c++,linux,网络安全,密码学
linux系统openssl的C++开发环境搭建,# openssl开发,ssl,c++,linux,网络安全,密码学

2.3 静态链接OpenSSL

在你的项目中,使用 -lssl -lcrypto 参数链接 OpenSSL 静态库。确保编译器能够找到 OpenSSL 库的头文件和静态链接库。
这里的 -I 参数用于指定 OpenSSL 头文件的路径,-L 参数用于指定 OpenSSL 静态库的路径。
新建main.cpp文件

#include <iostream>
#include <openssl/evp.h>
#include <openssl/rand.h>

int main() {
    std::cout << "OpenSSL C++ Development Environment is set up!" << std::endl;
    return 0;
}

编译命令如下:

g++ -o main main.cpp -I/home/arv000/openssl/include -L/home/arv000/openssl/lib -lssl -lcrypto

2.4 运行程序

在终端中运行你的可执行文件:

./main

如果一切设置正确,你应该看到输出:OpenSSL C++ Development Environment is set up!
linux系统openssl的C++开发环境搭建,# openssl开发,ssl,c++,linux,网络安全,密码学

三、openssl版本

1. OpenSSL 1.0.x 系列

- **1.0.0 系列:** 这个系列引入了许多改进,包括支持新的加密算法(例如AES-NI支持)、TLS 1.2 和新的密码学算法。它也修复了一些安全漏洞。
- **1.0.1 系列:** 这个系列增加了对TLS 1.1 和 1.2 的支持,并引入了一些性能优化和新的特性。
- **1.0.2 系列:** 这个系列是非常流行的版本,因为它引入了支持TLS 1.3、ChaCha20/Poly1305和EdDSA等新特性。这个系列也是很多Linux发行版的默认版本。
- **1.0.2 系列的维护版:** 在 1.0.2 系列中,一些版本是维护版本,主要用于修复安全漏洞和 bug。

2. OpenSSL 1.1.x 系列

- **1.1.0 系列:** 这个系列引入了更好的加密支持,包括Chacha20/Poly1305加密套件和新的XChaCha20构建、更好的性能,支持多线程操作,以及更好的安全性和稳定性。
- **1.1.1 系列:** 这个系列是 OpenSSL 最新的长期支持版本(LTS),它引入了支持TLS 1.3、Ed25519和Ed448等新特性。TLS 1.3 是一个非常重要的协议更新,带来了更好的性能和安全性。1.1.1 系列也为 OpenSSL 带来了更好的默认安全配置。

3. OpenSSL 3.0.x 系列

- **3.0.x 系列:** 这是 OpenSSL 的最新主要版本,引入了许多改进和新特性,包括新的 FIPS 模块、更好的性能、更好的安全性和更好的算法支持。

四、补充知识

4.1 openssl静态编译配置说明

在 OpenSSL 的编译配置中,你可以使用一系列的参数来控制是否编译某些特定功能或算法。

参数 说明
no-mdc2 不编译 MDC-2(Message Digest Algorithm 2)
no-cast 不编译 CAST 算法
no-rc2 不编译 RC2 算法
no-rc5 不编译 RC5 算法
no-ripemd 不编译 RIPEMD 系列哈希算法
no-rc4 不编译 RC4 算法
no-des 不编译 DES 算法
no-md2 不编译 MD2 算法
no-md4 不编译 MD4 算法
no-idea 不编译 IDEA 算法
no-aes 不编译 AES 算法
no-bf 不编译 Blowfish 算法
no-err 禁用 OpenSSL 错误处理(不建议使用,会导致 OpenSSL 在错误时不报告错误)
no-dsa 不编译 DSA 算法
no-dh 不编译 Diffie-Hellman 算法
no-ec 不编译椭圆曲线密码学(Elliptic Curve Cryptography)算法
no-hw 不使用硬件加速(例如不使用加速的加密指令集)
no-asm 不使用汇编语言实现加密算法(默认情况下 OpenSSL 会尝试使用汇编语言以提高性能)
no-krb5 不编译 Kerberos 5 支持
no-dso 禁用动态共享库(Dynamic Shared Objects)的支持
no-threads 禁用多线程支持
no-zlib 不使用 Zlib 压缩库
-DOPENSSL_NO_HASH_COMP 定义此宏来禁用 OpenSSL 中哈希压缩(hash compression)特性
-DOPENSSL_NO_ERR 定义此宏来禁用 OpenSSL 中的错误处理机制
-DOPENSSL_NO_HW 定义此宏来禁用 OpenSSL 中的硬件加速特性
-DOPENSSL_NO_OCSP 定义此宏来禁用 OpenSSL 中的 OCSP(Online Certificate Status Protocol)支持
-DOPENSSL_NO_SHA256 定义此宏来禁用 OpenSSL 中 SHA-256 哈希算法的支持
-DOPENSSL_NO_SHA512 定义此宏来禁用 OpenSSL 中 SHA-512 哈希算法的支持

这些参数允许你根据你的项目需求定制 OpenSSL 的编译。
请根据你的实际需求选择性地启用或禁用这些参数。文章来源地址https://www.toymoban.com/news/detail-739776.html

到了这里,关于linux系统openssl的C++开发环境搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • openssl+ SM2 + linux 签名校验开发实例(C++)

    SM2的校验过程是使用椭圆曲线上的公钥验证签名的有效性。以下是SM2校验的理论基础相关知识点: SM2签名算法: SM2的校验基于椭圆曲线数字签名算法(ECDSA)。在签名算法中,签名者使用私钥对消息的哈希值进行签名,而验证者使用相应的公钥、签名值和消息的哈希值进行验

    2024年01月22日
    浏览(50)
  • Ubuntu系统下搭建QtCreator开发环境详细过程(Qt简介;Linux下安装QtCreator)

    关于Qt的相关介绍,可以参考QT从入门到实战x篇,Qt 5.9 C++开发指南,对于重复部分,本栏目不做详细介绍。关于Linux的基础,本人将重新整理一个栏目,就叫 Linux基础 吧,有需要的可以后期关注下。 Qt 是一个跨平台的 C++开发库。主要用来开发图形用户界面 (Graphical User Inter

    2024年02月12日
    浏览(58)
  • 基于RK3588的嵌入式linux系统开发(一)——开发环境的搭建(SDK解压与本地初始化)

    1、拷贝rk3588的linux-sdk压缩包到工作目录,如下所示: 图1 拷贝rk3588的sdk到工作目录 2、进入sdk目录进行MD5码的计算,并对比md5sum.txt文件内的值,确保压缩包未被修改。 图2 MD5码计算与匹配 3、安装p7zip-full工具,并解压rk3588的sdk压缩包,如下图所示: sudo apt-get install p7zip-full

    2023年04月12日
    浏览(51)
  • 【正点原子Linux连载】第三章 RV1126开发环境搭建 摘自【正点原子】ATK-DLRV1126系统开发手册

    1)实验平台:正点原子RV1126 Linux开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692176265749 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html 3.1 rv1126的环境配置 在上章节里面我们已经安装好Ubuntu,此时的Ubuntu还是不能做开发的,因为还有很多环

    2024年02月04日
    浏览(52)
  • Linux系统下邮件服务器的搭建(Postfix+Dovecot+SSL)

    系统环境为 centos7.2 x64 mini 1.首先安装编译环境包  2.开始编译安装postfix     a.创建相关用户     b.编译安装     在make install环节的时候会有个交互式的界面,可以自定义一些目录,根据自己的需求填写,本人这里只更改了第二项临时文件目录,其他的都选择了默认目录

    2023年04月08日
    浏览(48)
  • Windows搭建OpenCV开发环境(C++)

    Windows 10 OpenCV MinGW-w64 CMake CLion 打包下载地址:https://download.csdn.net/download/u012899618/87902325 也可以直接下载编译好的文件(这样可跳过编译的步骤):https://download.csdn.net/download/u012899618/87907660 MinGW和CMake都需要配置(根据实际目录进行配置) 打开命令提示符,输入 如果提示如下

    2024年02月14日
    浏览(67)
  • VScode搭建Opencv(C++开发环境)

    cmake :cmake-3.27.2-windows-x86_64 MinGw:版本:8.1.0-release-posix-seh-rt_v6-rev0 Opencv:版本:4.5.5 MinGw下载地址 选择 mingw-w64 往下拉选择下载这个 下载该文件,下载后解压,然后记住位置。为了方便,我把它改名为MinGw。(这里是MinGw软件) 添加环境变量,可以直接 win+Q 搜索 “环境变量”

    2024年02月02日
    浏览(56)
  • MacOS搭建OpenCV开发环境(C++)

    安装opencv的前置条件需要先安装HomeBrew(安装过的请忽略) HomeBrew安装好以后,运行以下命令: 整个安装过程下载的东西较多,安装时间较长,需要耐心等待,同时对网络情况要求较高,请自行解决。 一些常见的 brew 命令 新建工程untitled 创建后,修改 CMakeLists.txt 文件 然后,

    2024年02月10日
    浏览(62)
  • c++使用OpenSSL基于socket实现tcp双向认证ssl(使用TSL协议)代码实现

    相信各位对OpenSSL库已经不陌生了,目前笔者使用这个库实现了RSA、AES加解密和tcp的双向认证功能,下面来看tcp的双向认证。 简单说双向认证就是:客户端认证服务端是否合法,服务端认证客户端是否合法 。 可以借助于HTTPS来说明,http网络传输协议是超文本的明文协议,也就

    2024年02月06日
    浏览(59)
  • 搭建开发环境-操作系统篇(一键搭建开发环境)

    所谓工欲善其事必先利其器,搭环境往往是开发过程中卡出很多初学者的拦路虎。 对于很多老鸟来说,很多东西都已经习惯成自然,也就没有刻意和初学者说。但对于很多初学者,却是受益良多。 这个系列,先从操作系统开始,记录一些在开发中常用的工具和小技巧 .NET 和

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包