Mosquitto MQTT 和 OpenSSL

Mosquitto MQTT and OpenSSL

我一直在使用 OpenSSL 和 mosquitto MQTT,我有一个问题。

到目前为止我只有一个客户。但是我如何才能将多个具有不同证书的客户端同时连接到同一个 MQTT 代理?

如果吊销其中一位客户的证书,它是如何工作的?

是否需要重启代理?

有人举个例子吗?

我使用 SSL/TLS 进行安全连接,为此我使用以下文件:

ca.key
ca.crt

server:
ca.crt
server.key
server.crt

client:
ca.crt
client.key
client.key

配置文件是这样的:

#Extra Listeners
listener 8883
cafile /Users/Documents/certs/ca.crt
keyfile /Users/Documents/certs/server.key
certfile /Users/Documents/certs/server.crt
#client certifcate settings
require_certificate true
use_identity_as_username true

谢谢!

对于第一个问题,要有多个客户端,您只需要确保每个客户端都有自己的证书和唯一的主题值。

您通过让证书颁发机构生成新的证书吊销列表文件来吊销证书,然后使用配置文件中的 crlfile 选项将 mosquitto 指向该文件。 例如

#Extra Listeners
listener 8883
cafile /Users/Documents/certs/ca.crt
keyfile /Users/Documents/certs/server.key
certfile /Users/Documents/certs/server.crt
crlfile /Users/Documents/certs/revoked.crl
#client certifcate settings
require_certificate true
use_identity_as_username true

手册页部分:

crlfile file_path

If you have require_certificate set to true, you can create a certificate revocation list file to revoke access to particular client certificates. If you have done this, use crlfile to point to the PEM encoded revocation file.

由于手册页没有提到 crlfile 将根据信号重新加载,这意味着您每次撤销证书时都需要重新启动 mosquitto。