在终端中执行以下命令来安装OpenSSL开发包:
sudo apt-get update
sudo apt-get install libssl-dev
这将会安装OpenSSL的开发头文件和库文件,使你能够在C++程序中使用OpenSSL功能。
创建一个新的C++源代码文件,比如 main.cpp
。
#include
#include
#include
int main() {
std::cout << "OpenSSL C++ Development Environment is set up!" << std::endl;
return 0;
}
这是一个简单的示例,用于验证你的开发环境是否设置成功。
在终端中使用g++编译器编译你的C++程序,并且链接OpenSSL库。假设你的源代码文件名为 main.cpp
,执行以下命令:
g++ -o main main.cpp -lssl -lcrypto
这个命令将编译 main.cpp
文件并将生成的可执行文件命名为 main
,同时链接了 OpenSSL 库。
在终端中运行你的可执行文件:
./main
如果一切设置正确,你应该看到输出:OpenSSL C++ Development Environment is set up!
。
现在,你已经成功搭建了一个基础的OpenSSL C++开发环境。你可以在 main.cpp
文件中继续添加你的代码,包括使用OpenSSL进行加密、解密、数字签名等操作。
有时候我们为了不依赖openssl动态库编译,因为linux系统中不一定openssl
下载地址:https://www.openssl.org/source/
我们下载3.2版本
wget https://www.openssl.org/source/openssl-3.2.0-alpha2.tar.gz
sudo apt install g++
tar -zxvf openssl-3.2.0-alpha2.tar.gz
./config no-shared --prefix=/home/arv000/openssl
2. 这里的 --prefix 参数指定了你希望 OpenSSL 安装的路径。请将其替换为你希望的安装路径。
make -j16
make install
在你的项目中,使用 -lssl -lcrypto 参数链接 OpenSSL 静态库。确保编译器能够找到 OpenSSL 库的头文件和静态链接库。
这里的 -I 参数用于指定 OpenSSL 头文件的路径,-L 参数用于指定 OpenSSL 静态库的路径。
新建main.cpp文件
#include
#include
#include
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
在终端中运行你的可执行文件:
./main
如果一切设置正确,你应该看到输出:OpenSSL C++ Development Environment is set up!
。
- **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。
- **1.1.0 系列:** 这个系列引入了更好的加密支持,包括Chacha20/Poly1305加密套件和新的XChaCha20构建、更好的性能,支持多线程操作,以及更好的安全性和稳定性。
- **1.1.1 系列:** 这个系列是 OpenSSL 最新的长期支持版本(LTS),它引入了支持TLS 1.3、Ed25519和Ed448等新特性。TLS 1.3 是一个非常重要的协议更新,带来了更好的性能和安全性。1.1.1 系列也为 OpenSSL 带来了更好的默认安全配置。
- **3.0.x 系列:** 这是 OpenSSL 的最新主要版本,引入了许多改进和新特性,包括新的 FIPS 模块、更好的性能、更好的安全性和更好的算法支持。
在 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 的编译。
请根据你的实际需求选择性地启用或禁用这些参数。