首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用莫斯科客户端测试VerneMQ broker TLS

用莫斯科客户端测试VerneMQ broker TLS
EN

Stack Overflow用户
提问于 2019-12-31 10:21:07
回答 2查看 2.2K关注 0票数 1

背景

  • 我设置并配置了VerneMQ代理。Broker在docker容器中,我使用docker-compose.yml启动它。以下是我的停靠撰写文件的外观:
代码语言:javascript
运行
复制
version: '3.3'
services:
  db:
    image: erlio/docker-vernemq
    container_name: vernemq1
    network_mode: docker_mysql_default
    restart: always
    environment:
      DOCKER_VERNEMQ_ALLOW_ANONYMOUS: 'off'
      DOCKER_VERNEMQ_PLUGINS.vmq_diversity: 'on'
      DOCKER_VERNEMQ_PLUGINS.vmq_passwd: 'off'
      DOCKER_VERNEMQ_PLUGINS.vmq_acl: 'off'
      DOCKER_VERNEMQ_VMQ_DIVERSITY.auth_mysql.enabled: 'on'
      DOCKER_VERNEMQ_VMQ_DIVERSITY.mysql.host: 'docker_mysql'
      DOCKER_VERNEMQ_VMQ_DIVERSITY.mysql.port: '3306'
      DOCKER_VERNEMQ_VMQ_DIVERSITY.mysql.user: 'vernemq'
      DOCKER_VERNEMQ_VMQ_DIVERSITY.mysql.password: 'vernemq'
      DOCKER_VERNEMQ_VMQ_DIVERSITY.mysql.database: 'vernemq_db'
      DOCKER_VERNEMQ_VMQ_DIVERSITY.mysql.password_hash_method: 'md5'
      DOCKER_VERNEMQ_LISTENER__SSL__CAFILE: '/vernemq/etc/ssl/chain.pem'
      DOCKER_VERNEMQ_LISTENER__SSL__CERTFILE: '/vernemq/etc/ssl/cert.pem'
      DOCKER_VERNEMQ_LISTENER__SSL__KEYFILE: '/vernemq/etc/ssl/privkey.pem'
      DOCKER_VERNEMQ_LISTENER__SSL__DEFAULT: '0.0.0.0:8081'
      DOCKER_VERNEMQ_LISTENER__SSL__DEFAULT__USE_IDENTITY_AS_USERNAME: 'off'
      DOCKER_VERNEMQ_LISTENER__SSL__DEFAULT__REQUIRE_CERTIFICATE: 'off'
    ports:
      # <Port exposed> : <Port running inside container>
      - '1883:1883'
      - '8081:8081'
    expose:
      # Opens port 1883 on the container
      - '1883'
      - '8081'
      # Where our data will be persisted
    volumes:
     - /var/lib/
     - /home/ubuntu/etc/ssl:/vernemq/etc/ssl
# Name our volume
volumes:
  my-db:
代码语言:javascript
运行
复制
DOCKER_VERNEMQ_LISTENER__SSL__CAFILE: '/vernemq/etc/ssl/chain.pem'
DOCKER_VERNEMQ_LISTENER__SSL__CERTFILE: '/vernemq/etc/ssl/cert.pem'
DOCKER_VERNEMQ_LISTENER__SSL__KEYFILE: '/vernemq/etc/ssl/privkey.pem'
DOCKER_VERNEMQ_LISTENER__SSL__DEFAULT: '0.0.0.0:8081'
DOCKER_VERNEMQ_LISTENER__SSL__DEFAULT__USE_IDENTITY_AS_USERNAME: 'off'
DOCKER_VERNEMQ_LISTENER__SSL__DEFAULT__REQUIRE_CERTIFICATE: 'off'
  • 我使用openssl客户端测试/验证了TLS连接:openssl s_client -connect 172.18.0.4:8081 -key privkey.pem -cert cert.pem I是从服务器本地主机执行这一连接,172.18.0.4是vernemq容器的IP地址,8081是预期的SSL默认端口(侦听器),并提供了key/cert,这就是结果(我认为这意味着TLS侦听器工作):

问题

我如何使用蚊子客户端或任何其他mqtt客户端来测试?我想在发布和订阅时使用基于TLS的连接。

当我不使用TLS时,我就是这样执行mosquitto_sub (订阅客户端):mosquitto_sub -h <ip_address> -p 1883 -t topic -d -u user -P password -i client-id

这是响应:VerneMQ订阅

当我尝试使用TLS时,我会添加--key和-cert选项来使用私钥和证书:mosquitto_sub -h <ip_address> -p 1883 -t topic -d -u user -P password -i client-id --key privkey.pem --cert cert.pem

我只反复得到Client user sending CONNECT。我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2020-06-16 08:22:42

您需要做的一些事情给您的证书目录授予正确的权限,您需要确保将权限设置给运行verneMQ的用户--在我的例子中--它的"vernemq“现在的下一步是设置对证书文件夹的权限。

代码语言:javascript
运行
复制
chown -R vernemq:vernemq /etc/letsencrypt/live

所有配置文件都应采用.pem格式。

代码语言:javascript
运行
复制
listener.ssl.cafile = /etc/letsencrypt/live/mqtts.domain.com/chain.pem
listener.ssl.certfile = /etc/letsencrypt/live/mqtts.domain.com/cert.pem
listener.ssl.keyfile = /etc/letsencrypt/live/mqtts.domain.com/privkey.pem

客户端必须使用Fullchain.pem连接到服务器,如果您没有由中间服务器颁发的域证书“让我们加密权限X3”,则该中介由“DST根CA X3”交叉签名(来自IdenTrust)。IdenTrust被大多数OSes和应用程序广泛信任,我们将“DST X3”作为根CA。如果您不是在太旧的操作系统上,那么您可以从您的本地机器上使用这个。

代码语言:javascript
运行
复制
cat /etc/ssl/certs/DST_Root_CA_X3.pem /etc/letsencrypt/live/$domain/chain.pem > ca.pem
票数 1
EN

Stack Overflow用户

发布于 2019-12-31 15:25:54

来自mosquitto_sub 男人页面:

加密连接 mosquitto_sub支持TLS加密连接。强烈建议您使用加密连接进行任何比最基本的设置更多的操作。 若要在使用x509证书时启用TLS连接,必须提供其中一个--cafile或-capath作为选项。

-卡帕思 定义包含受信任的PEM编码CA证书的目录的路径。用于启用SSL通信。 为了使证书文件正确工作,证书文件必须以".crt“作为文件的结尾,并且每次添加/删除证书时都必须运行"openssl”。

若要使用mosquitto_sub命令,必须提供带有受信任CA证书的文件或包含可信CA证书集合的目录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59542764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档