一、下载
源码包去如下官网下载:
https://www.openssl.org/source
二、交叉编译
这里以openssl-1.0.2t为例, openssl-1.1.1m类似,下载源码包,然后解压tar zxvf openssl-1.0.2t.tar.gz
cd openssl-1.0.2t/
源码根目录下,配置交叉编译工具链,XXXX为交叉编译工具链, 指定到-即可。
no-asm:表示不使用汇编,否则有些平台会编译失败
linux-generic32:表示使用32位linux版本
linux-generic64:表示使用64位linux版本
./Configure linux-generic32 no-asm --prefix=$PWD/install --cross-compile-prefix=XXXX(arm-linux-)
编译动态库 ./Configure 需要加入shared
./Configure linux-generic32 no-asm -shared --prefix=$PWD/install --cross-compile-prefix=XXXX
然后执行编译(32位编译如果遇到编译错误,打开Makefile,如果存在-m64, 去掉两处-m64的使用)
make
make install
在源码包根目录下的 install 目录获取编译成功的库文件及头文件。
三、查看openssl版本
openssl可执行程序在install目录bin目录下获取。
./openssl version
OpenSSL 1.0.f 6 Jan 2014
如果仅有头文件及库文件如何确认?可通过查看opensslv.h查看
# define OPENSSL_VERSION_TEXT "OpenSSL 1.0.2t 10 Sep 2019"
四、查看TLS握手支持的加密方式
使用openssl库常常用于TLS握手,有时会因为当前openssl支持的加密类型服务器不支持而握手失败,可以通过如下命令查看openssl支持的加密类型。openssl可执行程序在install目录bin目录下获取。./openssl ciphers -v
结果如下:
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384
ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384
ECDHE-RSA-AES256-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1
ECDHE-ECDSA-AES256-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA1
SRP-DSS-AES-256-CBC-SHA SSLv3 Kx=SRP Au=DSS Enc=AES(256) Mac=SHA1
SRP-RSA-AES-256-CBC-SHA SSLv3 Kx=SRP Au=RSA Enc=AES(256) Mac=SHA1
SRP-AES-256-CBC-SHA SSLv3 Kx=SRP Au=SRP Enc=AES(256) Mac=SHA1
..............