linux系统openssl的C++开发环境搭建_linux c++调用openssl des(1)

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

二、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

在这里插入图片描述

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

在这里插入图片描述

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

  • 编译安装
make -j16
make install

在这里插入图片描述
在这里插入图片描述

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!
在这里插入图片描述

三、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 压缩库

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

OpenSSL是一个强大的加密工具库和应用程序套件,在Linux内核,它通常用于处理安全相关的任务,如SSL/TLS协议、密码学算法等。要在Linux系统上利用OpenSSL与内核加密功能交互,你可以按照以下步骤操作: 1. **安装OpenSSL**: 如果尚未安装,首先通过包管理器安装,例如对于基于Debian的系统: ``` sudo apt-get install openssl ``` 或者对于基于RPM的系统,如Fedora: ``` sudo dnf install openssl ``` 2. **查看内核支持的加密函数**: OpenSSL通常会提供与系统内核兼容的API。运行`openssl version -providers`命令,可以列出可用的加密引擎及其是否由内核支持。 3. **使用内核加密功能**: - 对于加密数据,比如文件或者网络通信,你可以使用OpenSSL提供的命令行工具,如`openssl enc`、`openssl smime`等,并指定适当的选项来使用内核加密算法,比如AES、DES等。 4. **动态链接到内核模块**: 如果你需要特定的加密算法,而且该算法在默认的内核版本并未集成,可能需要加载相应的内核模块,然后通过OpenSSL API访问。这通常涉及对`modprobe`和`ldconfig`命令的操作,以及在程序设置合适的环境变量指向内核模块。 5. **编程接口(C/C++)**: 如果你在编写C或C++代码,可以直接调用OpenSSL的函数,它们会自动与内核的加密支持进行交互。例如,使用`EVP_aes_256_cbc()`函数进行AES-256-CBC加密。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值