HTTPS 中间件使用手册
HTTPS 中间件使用手册
1. 适用范围
本文档主要用于指导 sylixos 设备使用 libcurl 及 libopenssl 实现 https 网址等访问。
2. 原理概述
curl 作为一个使用 URL 语法实现文件传输的工具,其本身支持多种通信协议,其中就包含 http 及 https,而 https 的支持需要 openssl 来辅助保证安全通信要求。
3. 准备工作
3.1 网络环境准备
https 中间件主要用于嵌入式设备与公网网站或 IP 地址的访问及交互,因此在使用 https 中间件前务必确保嵌入式设备能正常访问公网网站。详细步骤如下:
1.
查看能连接公网电脑 IP 地址相关信息,后续 sylixos 设备网络相关设置将以此为参照,如
图
1
所示。
图 1 电脑网络信息
2.
设置 sylixos 设备网卡 IP 地址与电脑网关同网段,网关为电脑网关地址,DNS 服务器地址与电脑端一致,如
图
2
所示。
ifconfig en1 inet 10.13.0.100 //设置 IP 地址
ifconfig en1 gateway 10.13.0.1 //设置网关
ifconfigdns 0 114.114.114.114 //设置 DNS 服务器地址
图 2 sylixos 设备网络相关设置
注意:修改 IP 地址后先尝试 DNS 服务器及公网网址能否 ping 通,能 ping 通则表明当前网络环境设置完成;若无法 ping 通,可尝试将测试网卡设置为默认路由设备,如图 3、图 4所示。
route add default dev en1 //设置测试网口为默认路由设备
图 3 设置测试网口为默认路由设备
图 4 尝试 ping DNS 服务器及公网网址
3.2 软件资源准备
https 实现主要基于 libcurl 及 libopenssl 两个动态库文件,所以在使用前需要将这两个库上传至 sylixos 设备中。
1.
libopenssl 库在选择 base 组件库时勾选即可,同 base 一起编译完成后上传至 sylixos 设备即可,如
图
5
所示。
图 5 openssl 库添加
2.
libcurl 库编译后直接上传 sylixos 设备即可。由于 libcurl 库依赖 libopenssl 库,所以需要在编译前对依赖关系进行指明,如
图
6
、
图
7
所示。
图 6 openssl 头文件依赖指明
图 7 openssl 动态库依赖指明
4. HTTPS 测试
目前提供两种方式进行 https 测试,一种通过动态库提供的函数接口进行测试;另一种通过“curl”shell 命令测试。
4.1 函数接口测试
此种测试方式使用的测试案例主要来源于
curl
官网测试案例
,修改测试目标网址即可。如
图
8
、
图
9
所示。
图 8 curl 官网测试案例
图 9 查看
https://www.acoinfo.com
网站信息
注意:测试案例均需依赖 curl 动态库,所以需要在 app 工程中指明依赖关系,同时添加 curl 引出的函数接口头文件,如图 10、图 11所示。
图 10 curl 动态库依赖指明
图 11 curl 头文件指明
4.2 curl shell 命令测试
curl 命令详细使用方法可以参考网络相关说明进行使用,本次测试仅使用基础用法“curl-v
https://www.acoinfo.com”,如图
12所示。
图 12 curl 查看
https://www.acoinfo.com
网站信息
注意:https 网站访问需要验证网站 CA 证书,该证书信息统一保存在 /etc/ssl/certs/ca-certificates.crt 文件中,需要将访问网站的证书信息提前保存在文件中,如图 13所示。
图 13 sylixos 设备本地保存的网站 CA 证书信息
5. 网站证书信息获取
1.
Microsoft Edge浏览器获取网站证书
打开目标 https 网址后直接查看并下载,然后将证书中内容复制至 sylixos 设备证书文件中即可,如图 14、图 15、图 16所示。
图 14 查看网址 CA 证书
图 15 查看网址 CA 证书
图 16 下载网站 CA 证书
2.
Chrome
浏览器获取网站证书
Chrome
浏览器按照下列网址上操作即可获取网站
CA
证书,将其信息保存至
sylixos
设备证书中即可。(
https://blog.51cto.com/u_15338211/3558719
)
注意:导出证书时格式选择
Base64
编码
X.509(.CER)(S)
,确保证书信息可读性,如
图
17
所示。
图 17 Chrome 浏览器证书保存格式选择
Related Articles
SylixOS 下的 curl 使用
Q:如何在 SylixOS 下使用 curl 进行文件传输(PS: 快速上手)? A:使用 curl 进行文件传输步骤如下: 1. 使用前的准备工作 ① base 勾选 openssl 组件进行编译,将生成的 libcrypto.so 和 libssl.so 二进制上传至 SylixOS /lib 下; ② clone curl 代码,将编译生成的 libcurl.so 与 curl 分别上传至 /lib 与 /bin 下; 此时 curl 在 SylixOS 下已处于可用状态,shell 输入 ...
CC1PLUS.EXE: OUT OF MEMORY ALLOCATING 65536 BYTES
问:CC1PLUS.EXE: OUT OF MEMORY ALLOCATING 65536 BYTES 出现此问题是因为 函数内容太长,编译的时候报内存不足。 错误现象: CC1PLUS.EXE: OUT OF MEMORY ALLOCATING 65536 BYTES 答:参考链接: https://sysprogs.com/w/forums/topic/cc1plus-exe-out-of-memory-allocating-65536-bytes/ 具体操作,执行以下命令: ...
SylixOS 能支持的中间件库有哪些?
Q:SylixOS 能支持的中间件库有哪些? 分类 名称 简介 版本 说明文档 基础库 libboost Boost 是一个功能强大、构造精巧、跨平台、开源并且完全免费的 C++ 程序库,在 1998 年由 Beman G.Dawes 发起倡议并建立。使用了许多现代 C++ 编程技术,内容涵盖字符串处理、正则表达式、容器与数据结构、并发编程、函数式编程、泛型编程、设计模式实现等许多领域,极大地丰富了 C++ 的功能和表现力,能够使 C++ 软件开发更加简洁、优雅、灵活和高效。 Boost ...
SylixOS上同时运行多个APP提示内存申请失败
问:SylixOS上同时运行多个APP提示内存申请失败,怎样解决? 答:在 SylixOS 中,所有动态加载的对象,如内核模块、动态链接库、应用程序所使用的内存都来自于虚拟内存空间。虚拟内存空间以页为单位进行管理,对象加载时,只会获得虚拟页面,只有在真正使用时,才会进行物理页面的分配。 系统每启动一个app会预先分配32M左右的虚拟内存,但是不进行映射,使用时才映射物理地址。 例如在FUXI-H2的bsp中,虚拟内存描述符如下: ...
GCC浮点相关的编译选项配置
gcc的浮点相关编译选项配置 GCC 中的浮点相关的编译选项属于依赖于不同平台的配置选项, 本文的相关配置都是在 ARM32 平台下. SylixOS 下常用的浮点编译配置有两个 -mfpu=name, -mfloat-abi=name 测试程序 #include <stdio.h> #include <time.h> float calc(float *src_mem_32, float *dst_mem_32) { float mem_32; int i, j; for ...