【问题标题】:MQTT SSL peer did not return a certificateMQTT SSL 对等方未返回证书
【发布时间】:2016-09-23 23:05:44
【问题描述】:

我通过链接https://mosquitto.org/man/mosquitto-tls-7.html生成了CA、服务器和客户端证书

还将以下行添加到 mosquitto 服务器配置文件中。

listener 8883
cafile certs/ca.crt
certfile certs/server.crt
keyfile certs/server.key
require_certificate true

然后我编写了下面的 javascript 客户端来连接到服务器。

    var mqtt = require('mqtt');
    var fs = require('fs');
    var KEY = fs.readFileSync('G:/Projects/test/client.key');
    var CERT = fs.readFileSync('G:/Projects/test/client.crt');
    var TRUSTED_CA_LIST = [fs.readFileSync('C:/Program Files (x86)/mosquitto - Copy/certs/ca.crt')];

    var PORT = 8883;
    var HOST = 'localhost';

    var options = {
      port: PORT,
      host: HOST,
      protocol: 'mqtts',
      keyPath: KEY,
      certPath: CERT,
      passphrase: 'testnode',
      rejectUnauthorized : false,
      //The CA list will be used to determine if server is authorized
      ca: TRUSTED_CA_LIST,
      secureProtocol: 'TLSv1_method',
      protocolId: 'MQIsdp',
      protocolVersion: 3
    };

    var client = mqtt.connect(options);

    client.subscribe('messages');
    client.publish('messages', 'Current time is: ' + new Date());
    client.on('message', function(topic, message) {
      console.log(message);
    });

    client.on('connect', function(){
        console.log('Connected');
    });

但是当我运行这段代码时,服务器会抛出以下错误。

1464240743: New connection from 127.0.0.1 on port 8883.
1464240743: OpenSSL Error: error:140890C7:SSL routines:ssl3_get_client_certifica
te:peer did not return a certificate
1464240743: Socket error on client <unknown>, disconnecting.

【问题讨论】:

  • 你找到解决办法了吗?
  • 你能解决这个问题吗?

标签: javascript ssl mqtt tls1.2 mosquitto


【解决方案1】:

根据this.

keyPath 更改为key,并将certPath 更改为cert

【讨论】:

  • 您能否在您的答案中添加更多细节(例如,在答案中包含来自原始问题的固定 sn-p 代码)以使其更清晰。因为这是您的答案,仅比链接好一点。谢谢
猜你喜欢
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
  • 2018-07-20
  • 2012-02-07
  • 1970-01-01
  • 2015-07-05
  • 2019-10-31
  • 2015-11-21
相关资源
最近更新 更多