Laravel-MQTT:TLS 连接配置 - php-mqtt/laravel-client

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

我尝试将我的 [laravel] Web 应用程序连接到 [mqtt] 代理 eclipse-mosquitto。代理在与应用程序不同的服务器上运行。我想知道如何在我的网络应用程序中配置 .env 文件。实际上,我只能在没有 [TLS] 的情况下进行连接。

这是我的 Web 应用程序的 .env 文件:

MQTT_HOST=//mosquitto
MQTT_PORT=8883
MQTT_TLS_ENABLED=true
MQTT_TLS_ALLOW_SELF_SIGNED_CERT=true
MQTT_TLS_CA_FILE=/usr/local/share/ca-certificates/ca.crt
MQTT_TLS_CA_PATH=/usr/local/share/ca-certificates
MQTT_TLS_CLIENT_CERT_FILE=/usr/local/share/ca-certificates/server.crt
MQTT_TLS_CLIENT_CERT_KEY_FILE=/usr/local/share/ca-certificates/server.key

我已经使用命令行realpath找到了绝对路径。

这里是 mqtt-client.php 的片段:

// The TLS settings used for the connection. Must match the specified port.
'tls' => [
    'enabled' => env('MQTT_TLS_ENABLED', false),
    'allow_self_signed_certificate' => env('MQTT_TLS_ALLOW_SELF_SIGNED_CERT', false),
    'verify_peer' => env('MQTT_TLS_VERIFY_PEER', true),
    'verify_peer_name' => env('MQTT_TLS_VERIFY_PEER_NAME', true),
    'ca_file' => env('MQTT_TLS_CA_FILE'),
    'ca_path' => env('MQTT_TLS_CA_PATH'),
    'client_certificate_file' => env('MQTT_TLS_CLIENT_CERT_FILE'),
    'client_certificate_key_file' => env('MQTT_TLS_CLIENT_CERT_KEY_FILE'),
    'client_certificate_key_passphrase' => env('MQTT_TLS_CLIENT_CERT_KEY_PASSPHRASE'),
],

通过此设置,我收到此错误: PhpMqtt\Client\Exceptions\ConfigurationInvalidException 证书颁发机构文件设置必须包含常规文件的路径。

我尝试添加引号、双引号和大括号,但没有任何效果。

错误消息似乎是直接从 [php-mqtt/laravel-client] 提供的,而不是从 mqtt 代理提供的。

有人知道我做错了什么吗?

谢谢!

php laravel mqtt mosquitto phpmqtt
1个回答
0
投票

我的问题是访问证书颁发机构文件。我的泊坞窗无权访问我放置文件的目录。我已将证书颁发机构文件更改为我的 docker 可以访问的目录,现在可以使用了。

github问题的链接。

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