设置 Echo 服务器 - FreeRTOS
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设置 Echo 服务器

/tools/echo_server/ 目录具有用于基于 Go 的 Echo 服务器的源代码,您可以使用该服务器在 FreeRTOS 上测试 TCP。您可以在 /libraries/abstractions/secure_sockets/test/iot_test_tcp.c 文件中找到 TCP 测试。按照本节中的说明设置并运行 Echo 服务器。

Prerequisites

要运行 TLS Echo 服务器,您必须安装以下内容:

  • Go – 您可以从 golang.org 下载最新版本。

  • OpenSSL – 有关 Linux 源代码下载的信息,请参阅 OpenSSL.org。您还可以使用软件包管理器安装 OpenSSL 用于Linux和 macOS.

创建凭证

完成先决条件后,必须输入以下命令才能创建凭证。

服务器

以下 openssl 命令生成自签名服务器证书。

RSA
openssl req -newkey rsa:2048 -nodes -x509 -sha256 -out certs/server.pem -keyout certs/server.key -days 365 -subj "/C=US/ST=WA/L=Place/O=YourCompany/OU=IT/CN=www.your-company-website.com/emailAddress=yourEmail@your-company-website.com"
EC
openssl req -new -x509 -nodes -newkey ec:<(openssl ecparam -name prime256v1) -keyout certs/server.key -out certs/server.pem -days 365 -subj "/C=US/ST=WA/L=Place/O=YourCompany/OU=IT/CN=www.your-company-website.com/emailAddress=yourEmail@your-company-website.com"
客户端

以下 openssl 命令生成客户端证书。

RSA
openssl genrsa -out certs/client.key 2048 openssl req -new -key certs/client.key -out certs/client.csr -subj "/C=US/ST=WA/L=Place/O=YourCompany/OU=IT/CN=www.your-company-website.com/emailAddress=yourEmail@your-company-website.com" openssl x509 -req -in certs/client.csr -CA certs/server.pem -CAkey certs/server.key -CAcreateserial -out certs/client.pem -days 365 -sha256
EC
ecparam -genkey -name prime256v1 -out certs/client.key openssl req -new -key certs/client.key -out certs/client.csr -subj "/C=US/ST=WA/L=Place/O=YourCompany/OU=IT/CN=www.your-company-website.com/emailAddress=yourEmail@your-company-website.com" openssl x509 -req -in certs/client.csr -CA certs/server.pem -CAkey certs/server.key -CAcreateserial -out certs/client.pem -days 365 -sha256

目录结构

默认情况下,证书和密钥存储在名为 certs 位于配置文件中指定的相对路径上, config.json。如果要将凭证移至其他目录,可以在配置文件中更新此目录位置。

您可以在 echo_server.go 文件中找到 Echo 服务器的源代码。

服务器配置

Echo 服务器读取基于 JSON 的配置文件。此JSON文件的默认位置是 ./config.json。要覆盖此域,请使用 -config 标记。

JSON 文件包含以下选项:

server-port

指定要打开套接字的端口。

server-certificate-location

指向在创建凭证中生成的服务器证书的相对路径或绝对路径。

secure-connection

启用此选项可让 Echo 服务器使用 TLS。你必须先创建凭证

日志记录

启用此选项可将收到的所有日志消息输出到文件。

verbose

启用此选项可输出发送到 Echo 服务器的消息的内容。

server-key-location

指向在创建凭证中生成的服务器密钥的相对路径或绝对路径。

示例配置

{ "verbose": false, "logging": false, "secure-connection": false, "server-port": "9000", "server-certificate-location": "./certs/server.pem", "server-key-location": "./certs/server.pem" }

从命令行运行 Echo 服务器

输入以下命令以运行 Echo 服务器。

go run echo_server.go

输入以下命令以使用自定义配置位置运行。

go run echo_server.go -config=config_file_path

如果要同时运行不安全和安全的 TCP 测试,则必须同时启动安全和不安全的 Echo 服务器。为此,请创建第二个安全的配置文件,并使用 -config 标志将其位置传递给 Echo 服务器的第二个实例。还要记住在第二个配置文件中指定不同的 TCP 端口。

客户端设备配置

在设备上运行TCP测试之前,我们建议您阅读 开始使用 FreeRTOSFreeRTOS 用户指南.

完成创建凭证中的步骤后,您应该具有以下文件:

  • certs/server.pem

  • certs/server.key

  • certs/server.srl

  • certs/client.pem

  • certs/client.key

  • certs/client.csr

对这些文件进行以下更改:

/tests/include/aws_clientcredential.h
  • 定义代理终端节点。

  • 定义事物名称。

  • 定义对 Wi-Fi 的访问(如果不在以太网上)。

/tests/include/aws_clientcredential_keys.h
  • keyCLIENT_CERTIFICATE_PEM 设置为 certs/client.pem 的内容。

  • keyJITR_DEVICE_CERTIFICATE_AUTHORITY_PEM 保留为 NULL

  • keyCLIENT_PRIVATE_KEY_PEM 设置为 certs/client.key 的内容。

  • 有关更多信息,请参阅 配置 FreeRTOS 演示.

/tests/include/aws_test_tcp.h
  • tcptestECHO_HOST_ROOT_CA 设置为 certs/server.pem 的内容。

  • 设置 Echo 服务器的 IP 地址和端口:

    • tcptestECHO_SERVER_ADDR[0-3]

    • tcptestECHO_PORT

  • 设置安全 Echo 服务器的 IP 地址和端口:

    • tcptestECHO_SERVER_TLS_ADDR0[0-3]

    • tcptestECHO_PORT_TLS