cURL支持https--移植--集成mbedTLS

前言:
cURL若要支持https即SSL/TLS协议,则需要移植开源ssl库,用的最多的则是openssl、若是在嵌入式设备中使用openssl库,则编译后的大小比较大,不适合用在嵌入式设备。于是转向更小巧的mbedTLS(PolarSSL),CyaSSL 。

一、移植mbedTLS:
本次移植选用mbedTLS进行移植。
1.下载:mbedTLS 本次选用mbedtls-2.6.0-apache.tgz版本。
2.解压

 tar -xvf mbedtls-2.6.0-apache.tgz

3.根据不同的需要,可以设置不同的配置。可从mbedtls-2.6.0/configs目录下选取适合自己的config配置文件重命名为confi.h覆盖至mbedtls-2.6.0/include/config.h
4.编译命令:

make CC=arm-hisiv300-linux-gcc SHARE=1

编译前保证交叉编译工具安装,如果SHARED=1省略,会只编译静态库。

make install

二、移植cURL
1.下载 cURL 本次选择curl-7.54.0.zip版本。
2.配置需要的功能,本次只需要http/https,配置如下:

./configure --host=arm-hisiv300-linux CC=arm-hisiv300-linux-gcc --with-mbedtls=/usr/local/ --enable-optimize --disable-debug --disable-curldebug --disable-symbol-hiding --disable-dict --disable-gopher --disable-imap --disable-pop3 --disable-rtsp --disable-smtp --disable-telnet --disable-sspi --disable-smb --disable-ntlm-wb --disable-tls-srp --disable-soname-bump --disable-manual --disable-file --disable-ldap --disable-tftp --enable-http --disable-ftp --disable-ipv6

注:在刚开始编译的时候,SSL supoort看不到mbedtls显示需要查看 –with-mbedtls=/usr/local/ 此配置中mbedtls是否正确。
正确显示如下:

3.编译

make
make install

4.可执行arm-hisiv300-linux-strip 对相应的应用程序和库进行去注释信息,进一步减小大小。处理之后curl的大小102K,库的大小为643K。
5.将编译好的库以及可执行文件拷贝到板端。应用程序curl在/usr/local/bin下,库libcurl.so.4,libcurl.so.4.4.0,libcurl.so在/usr/local/lib,实际只有一个库,另外两个是软链接。

查看是否正常工作:
这里写图片描述
此时表明可以正确运行了

接着需要添加DNS到板端/etc/resolv.conf文件中,无则创建。

nameserver 114.114.114.114

试试连接百度

curl https://www.baidu.com
curl:(51) Cert verify failed: BADCERT_NOT_TRUSTED

表明没有安装证书,找一个证书放在当前目录,我下载了一个ca-bundle.crt 一些常用网站的证书在这里面。
再次运行

curl -k -cert ca-bundle.crt https://www.baidu.com

运行结果说明https访问成功了:
cURL支持https--移植--集成mbedTLS_第1张图片

你可能感兴趣的:(移植)