安全性

本文档提供与 WhatsApp Business API 客户端的密码、身份验证、SSL 配置、网络隔离、加密通信、HTTP 标头和网络服务器 TLS 协议相关的信息。

密码和身份验证

如需有关身份验证口令密码最佳实践的更多信息,请参阅登录和身份验证文档

SSL 配置

访问 WhatsApp Business API 客户端时需要使用 HTTPS。

WhatsApp Business API 客户端在创建时会默认生成自签名证书。您可能需要使用用于生成自签名证书的认证机构 (CA) 证书验证 WhatsApp Business API 客户端的端点,并避免出现证书信任警告。您也可以上传 CA 证书,而不是自签名证书。详情请参阅 CA 证书文档

Webhooks 同样需要使用 HTTPS 执行回调,因此您可以使用自己的 CA 证书,以免应用程序在尝试向已配置的 Webhooks 发出 POST 请求时发生 SSL 错误。详情请参阅 Webhooks CA 证书文档

网络隔离

建议您将网页应用和核心应用节点托管到单独的隔离网络中,并仅向所需服务公开这些节点。

网页应用节点应仅向托管 WhatsApp Business API 客户端和管理人员工作站的网络公开 API 和 Web 管理端点。

核心应用节点应仅向网页应用节点公开通信服务,而在多连接设置中,应仅向其他核心应用节点公开控制服务。

加密通信

网页应用与核心应用间的通信

建议您在核心应用和网页应用容器中均设置 WA_SECRET 环境变量,确保对两者之间的通信进行加密。

注意:核心应用和网页应用主机需要同步时钟,以确保加密功能正常运作。如果时间有所偏移,重放保护功能(即每间隔 10 秒执行 1 次时间戳检查)可能会导致通信失败。

数据库通信

您可以配置 SSL 参数,用于加密数据库连接,从而保护传输中的数据。

之前,只有核心应用能够访问数据库,因此使用 WA_DB_CONNECTION_OPTION 环境变量只可加密核心应用与数据库之间的连接。但现在,网页应用容器也可以访问数据库,所以务必要加密网页应用与数据库之间的连接。为此,我们更改了 SSL 配置,使所有容器与数据库之间的连接都能得到加密处理。您可以使用以下环境变量配置加密功能:

  • WA_DB_SSL_KEY
  • WA_DB_SSL_CERT
  • WA_DB_SSL_CA
  • WA_DB_SSL_VERIFY

可以配置 WA_DB_SSL_VERIFY,用于验证服务器身份。在某些内部开发设置中,此为必要配置。我们强烈建议您不要禁用验证功能。如果您未设置此参数,系统将默认启用验证功能。如要禁用验证功能,请使用以下参数:

WA_DB_SSL_VERIFY=0

注意:WA_DB_SSL_VERIFY适用于网页应用。

为确保向后兼容性,我们将继续在停用模式下为 WA_DB_CONNECTION_OPTION 提供支持,您可使用该参数加密核心应用与数据库之间的连接。强烈建议您改用上述新参数。

使用 Key、Cert 和 CA 环境变量配置的所有文件必须支持在容器内访问。为此,您可以在拥有相应权限的数据卷下创建 certs 目录。您通常可将数据卷作为 /usr/local/waent/data 安装,然后便可在容器内的 /usr/local/waent/data/certs 中访问证书目录。

网络服务器 (TLS)

TLS 协议和密码均已按照 Mozilla 推荐配置进行配置。网页应用支持 3 种配置文件:MODERN(默认)、INTERMEDIATE 和 OLD。

为增强安全性,建议您保留默认配置。但是,您也可以选择使用 WA_WEB_SECURITY_LEVEL 环境变量将配置文件降级。

HTTP 标头

Web 管理支持以下 HTTP 标头,而 API 端点则不支持,具体情况视使用的浏览器而定。

名称描述

X-Content-Security-policy

定义策略,只允许同网域的脚本在 Web 管理中运行

X-Frame-Options

标头不允许任何网域以 iframe 的形式纳入 Web 管理页面

X-XSS

保护性标头,当检测到攻击时,会清除输入内容中的敏感信息,使 Web 管理页面免受跨站脚本攻击

X-Content-Type-Options

确保服务器接收到的内容类型与所请求的类型相同

Strict-Transport-Security

确保仅可通过 HTTPS 访问 Web 管理