DNS 替换的 HAProxy 配置问题导致 Azure IoT 中心出现 401 未经授权的错误

问题描述 投票:0回答:1

我正在使用 HAProxy 将请求转发到 Azure IoT 中心,但遇到来自 IoT 中心的问题 401 未经授权错误。错误响应包括 iothuberrorcode 作为 IoTHubNotFound。我能够从运行 HAProxy 的服务器成功 ping 并执行 nslookup,只有使用 haproxy 时才会出现错误。

这是我的 haproxy.cfg:

frontend iothub_frontend
  bind *:443
  mode tcp
  default_backend iothub_backend
backend iothub_backend
  mode tcp
  server iothub <<iothub-name>>.azure-devices.net:443
  http-request set-header Host <<iothub-name>>.azure-devices.net
azure haproxy azure-iot-hub unauthorized
1个回答
0
投票

要解决连接到 Azure IoT 中心时 HAProxy 请求中的 401 Unauthorized 错误,请配置 SSL 终止并将证书绑定到端口 443,如下所示:

bind *:443 ssl crt /etc/ssl/mydomain/mydomain.pem alpn h2,http/1.1

创建 X.509 证书并将其用作 haproxy 中的 Azure IoT Hub 的身份验证。

请参阅本指南,了解有关在 HAProxy 中配置 SSL 证书的详细说明。

添加 SSL/TLS 参数以确保使用安全协议。包括最低 SSL 版本指令,如下所示:

bind *:443 ssl crt /etc/ssl/mydomain/mydomain.pem alpn h2,http/1.1 ssl-min-ver TLSv1.2

对于协议版本,请使用

TLSv1.2
表示
1.2
,使用
TLSv1.1
表示
1.1

以下是

haproxy.cfg
配置示例:


frontend iothub_frontend
  bind *:443 ssl crt /etc/haproxy/cert.pem   configured
  mode http
  option httplog
  option forwardfor
  default_backend iothub_backend

backend iothub_backend
  mode http
  server iothub <<iothub-name>>.azure-devices.net:443 ssl verify none
  http-request set-header Host <<iothub-name>>.azure-devices.net
  http-request set-header Authorization "SharedAccessSignature sr=<<iothub-name>>.azure-devices.net&sig=<<signature>>&se=<<expiry>>&skn=iothubowner"

要验证与 Azure IoT 中心的连接,请运行以下命令:

openssl s_client -connect <<iothub-name>>.azure-devices.net:443

输出: Output with ssl

© www.soinside.com 2019 - 2024. All rights reserved.