0

我已经通过 MQTT 实现了 TLS 连接,如下所示。

mqttOptions = {
clientId: '100',
key: fs.readFileSync('test/certs/client.key'),
cert: fs.readFileSync('test/certs/client.crt'),
ca: fs.readFileSync('test/certs/ca.crt'),
secureProtocol: 'TLSv1_method',
rejectUnauthorized: false,
protocolId: 'MQIsdp',
protocolVersion: 3,
passphrase: 'edgenode',
keepAlive: 1000,
clean: false,
reconnectPeriod: '1000',
will: willMessage

};

var client = mqtt.connect(tls://localhost:8883, mqttOptions);

在这里,我传递了客户端密钥、证书和 CA 证书。相反,我需要使用来自 Windows 证书存储的信息进行连接。假设我已经在 Windows 证书存储中安装了客户端证书,我如何使用 nodeJS 从中读取私钥并建立连接?请指教。

4

1 回答 1

0

通过MSCAPI访问 Windows 密钥库。

我在 npm 上看不到这个 API 的任何 NodeJS 包装器,但即使有你也必须修改 mqtt 库才能使用它,因为它实际上不会让你访问私有客户端密钥,而是你传入要使用该密钥签名/加密的数据,它会像硬件加密设备一样将签名/加密的数据返回给您。

如果您确实需要使用 Windows 密钥库,我建议您将客户端应用程序移植到 C、C# 或 Java 之类的东西上,因为这些应用程序有 MSCAPI 库,它们使用语言标准 API 提供密钥/证书

于 2016-06-08T08:29:53.110 回答