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: OU​T 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 ...