OpenSSL是一个开源的密码学工具包,提供了一组用于网络安全的加密和解密算法、协议以及相关工具的库,它通过提供多种加密算法、协议和工具,为网络通信和数据存储提供了强大的安全保障。
主要功能
- 加密和解密:
- OpenSSL提供了多种对称加密(如AES、DES、3DES、RC4等)和非对称加密算法(如RSA、DSA、ECC等),用于数据的加密和解密。
- 对称加密使用相同的密钥进行加密和解密,而非对称加密使用一对密钥(公钥和私钥)进行加密和解密。
- SSL/TLS协议:
- OpenSSL实现了SSL(Secure Sockets Layer)和TLS(Transport Layer Security)协议,用于安全的数据传输。
- 这些协议保护Web浏览、电子邮件通信、文件传输等的安全性。
- 数字证书:
- OpenSSL支持数字证书的生成、签名和验证,包括X.509证书。
- 数字证书用于身份验证和建立安全通信连接,包含了公钥和其他标识信息,由受信任的证书颁发机构(CA)签名。
- 哈希函数:
- OpenSSL包括多种哈希算法,如MD5、SHA-1(现已不再视为安全)、SHA-256、SHA-3等,用于验证数据的完整性和生成数据摘要。
- 随机数生成:
- OpenSSL提供了随机数生成器来生成高质量的随机数,这是加密操作的关键组成部分。
- 密码学工具:
- OpenSSL包含加密解密命令行工具、证书管理工具、SSL/TLS客户端和服务器实现等多种密码学工具。
- 受信任的根证书:
- OpenSSL包含一组受信任的根证书,用于验证其他实体的数字证书。
官网链接:[ Downloads ] - /source/index.html
交叉编译环境
当前平台/开发平台-编译环境:
[root@localroot ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@localroot ~]# uname -a
Linux localroot 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@localroot ~]# lscpu | grep Architecture
Architecture: x86_64
目标平台/运行平台-目标环境:
root@linaro-alip:~# uname -a
Linux linaro-alip 4.4.132 #38 SMP Sat Jan 4 15:11:14 CST 2020 armv7l GNU/Linux
root@linaro-alip:~# lscpu | grep Architecture
Architecture: armv7l
交叉编译步骤
# 步骤1
./Configure no-asm shared no-async --prefix=/usr/local/arm-openssl-3.0 CROSS_COMPILE=/home/project/toolchain/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-# no-asm: 是在交叉编译过程中不使用汇编代码代码加速编译过程,原因是它的汇编代码是对arm格式不支持的。
# shared :生成动态连接库。
# no-async:没有提供GNU C的ucontext库。
# --prefix:安装目录
# CROSS_COMPILE:交叉编译工具链前缀
# 步骤2
make
错误1:
Can't locate IPC/Cmd.pm in @INC (@INC contains: /home/libopenssl/openssl-3.0.14/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/libopenssl/openssl-3.0.14/external/perl/Text-Template-1.56/lib) at /home/libopenssl/openssl-3.0.14/util/perl/OpenSSL/config.pm line 19.
BEGIN failed--compilation aborted at /home/libopenssl/openssl-3.0.14/util/perl/OpenSSL/config.pm line 19.
Compilation failed in require at ./Configure line 23.
BEGIN failed--compilation aborted at ./Configure line 23.
解决方法:
yum -y install perl-IPC-Cmd
错误2:
解决方法: 删除Makefile中全部 -m64
# 步骤3
make clean # 首次编译出现问题,解决问题后执行
make
# 步骤4
make install
结果,安装目录内容如下:
使用
根据需求将以下交叉编译出来的库放到arm平台/lib/下:
例如:使用MD5加密算法。
1)将库拷贝至arm平台/lib/下
2)编译命令中指定头文件和库路径
arm-linux-gnueabihf-g++ ··· -I /usr/local/arm-openssl-3.0/include/ -L /usr/local/arm-openssl-3.0/lib64/ -lcrypto
3)代码中引入对应的头文件
#include <openssl/md5.h>
就可以在代码中使用md5算法啦。