openssl交叉编译-移植ARM

发布于:2024-07-11 ⋅ 阅读:(58) ⋅ 点赞:(0)

        OpenSSL是一个开源的密码学工具包,提供了一组用于网络安全的加密和解密算法、协议以及相关工具的库,它通过提供多种加密算法、协议和工具,为网络通信和数据存储提供了强大的安全保障。

主要功能

  1. 加密和解密
    1. OpenSSL提供了多种对称加密(如AES、DES、3DES、RC4等)和非对称加密算法(如RSA、DSA、ECC等),用于数据的加密和解密。
    2. 对称加密使用相同的密钥进行加密和解密,而非对称加密使用一对密钥(公钥和私钥)进行加密和解密。
  2. SSL/TLS协议
    1. OpenSSL实现了SSL(Secure Sockets Layer)和TLS(Transport Layer Security)协议,用于安全的数据传输。
    2. 这些协议保护Web浏览、电子邮件通信、文件传输等的安全性。
  3. 数字证书
    1. OpenSSL支持数字证书的生成、签名和验证,包括X.509证书。
    2. 数字证书用于身份验证和建立安全通信连接,包含了公钥和其他标识信息,由受信任的证书颁发机构(CA)签名。
  4. 哈希函数
    1. OpenSSL包括多种哈希算法,如MD5、SHA-1(现已不再视为安全)、SHA-256、SHA-3等,用于验证数据的完整性和生成数据摘要。
  5. 随机数生成
    1. OpenSSL提供了随机数生成器来生成高质量的随机数,这是加密操作的关键组成部分。
  6. 密码学工具
    1. OpenSSL包含加密解密命令行工具、证书管理工具、SSL/TLS客户端和服务器实现等多种密码学工具。
  7. 受信任的根证书
    1. 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算法啦。 


网站公告

今日签到

点亮在社区的每一天
去签到