当前位置: 首页 > 工具软件 > wolfSSL > 使用案例 >

wolfssl_初识wolfSSL,OpenSSL的一个替代品

冀望
2023-12-01

写完 《嵌入式设备上的Curl工具》

这篇文章后,收获就是了解了 wolfSSL 这个 TLS 实现。

简单看了下官方文档,对它有了感性的认识,本文会涉及三部分,第一就是 wolfSSL 的安装,第二是是配置 tiny-curl,第三就是简单了解如何使用 libcurl 包。

wolfSSL 公司有很多产品,最重要的就是 wolfSSL,它是一个轻量级的 SSL 实现,主要应用于嵌入式系统。它的卖点就是速度快,功能多,包比较小,目前已经支持 TLS 1.3,只有 OpenSSL 的1/20 大小。

如果大家要选择一个 TLS 库,且觉得 OpenSSL 比较大,wolfSSL 是一个选择,但目前关注度比较少,同时也缺乏一些类似 openssl s_clinet 这样的 工具 包。

首先去 https://www.wolfssl.com/download 下载 wolfssl(wolfssl-4.0.0.zip)和 tiny-curl(tiny-curl-0.9-7.64.1.zip),安装 wolfssl:

$ unzip wolfssl-4.0.0.zip

$ cd wolfssl-4.0.0/

$ ./configure --help

$ ./configure --prefix /usr/local/wolfssl

$ make

$ make install

$ ./testsuite/testsuite.test

$ cd /usr/local/wolfssl/bin

$./wolfssl-config --version

4.0.0

然后安装 tiny-curl,主要注意使用 wolfssl 库,执行如下:

$ unzip tiny-curl-0.9-7.64.1.zip

$ cd tiny-curl-0.9-7.64.1

#--disable-shared --enable-static

$ ./configure --prefix ~/tiny-curl --with-wolfssl=/usr/local/wolfssl --without-ssl

$ make

$ make install

然后测试 tiny-curl,执行如下:

$ ~/tiny-curl/bin/curl --version

curl 7.64.1 (x86_64-pc-linux-gnu) libcurl/7.64.1 wolfSSL/4.0.0 zlib/1.2.8

Release-Date: 2019-05-03

Protocols: dict ftp ftps http https smtp smtps telnet tftp

Features: AsynchDNS HTTP2 IPv6 Largefile libz SSL UnixSockets

libcurl 带了一个工具 curl-config,执行如下:

$ ./curl-config --version

libcurl 7.64.1

接下去运行 tiny-curl,执行如下:

$ ~/tiny-curl/bin/curl --version

curl 7.64.1 (x86_64-pc-linux-gnu) libcurl/7.64.1 wolfSSL/4.0.0 zlib/1.2.8

Release-Date: 2019-05-03

Protocols: ftp ftps http https imap imaps pop3 smtp smtps telnet

Features: AsynchDNS HTTP2 IPv6 libz SSL UnixSockets

最后,如何使用 tiny-curl 的 libcurl 包呢?简单写个例子(examole.c):

#include

#include <.>

int main(void)

{

CURL *curl;

curl_global_init(CURL_GLOBAL_DEFAULT);

curl = curl_easy_init();

if(curl) {

curl_version_info_data *d = curl_version_info(CURLVERSION_NOW);

printf("%s",d->version);

}

return 0;

}

接下去编译:

$ `~/tiny-curl/bin/curl-config --cc --cflags` -o example example.c `~/tiny-curl/bin/curl-config --libs`

$ ./example

写完这篇文章后,我意识到自己的不足,对于偏底层的代码没写过,写的都是应用层代码,所以下一阶段还有很大的不足,为什么这么说呢,在 gcc example.c 的时候遇到很多问题,而且还没有解决,欢迎大家提出潜在的问题。

通过写公众号,我成长了很多,也希望文章给大家一些帮助,同时在您不反感的情况下,给我多多点点广告。

 类似资料: