[11]MQTT mosquitto 双向SSL认证配置方式

原创 2015年05月31日 23:07:16

我们知道,MQTT mosquitto支持单项和双向的SSL认证,在上一节中,我们已经给大家分享了单向的SSL如何配置,在这一节中咱们来看一下双向的SSL认证的配置文件应该如何配置? 那么什么是双向的SSL认证呢?所谓的双向的SSL认证,打个通俗的比方就是,在进行SSL加密通信前,通信的双方(在咱们的例子中是mosquitto服务器端和MQTT客户端(消息的发送或者接收端))需要相互验证各自的证书是否合法。比如,是否是一个合法的CA颁发的等等。

在上一节提到,我们知道启动MQTT mosquitto的时候,可以通过下面的命令

mosquitto [-c config file] [ -d | --daemon ] [-p port number] [-v]

来指定启动的方式,其中,-c 后面跟的是启动mosquitto可以调整的参数,比如是否开启基本认证,端口是什么,SSL单向和双向的认证配置等等。

-d 表示MQTT mosquitto将在后台运行。

-p 代表当前的mosquitto服务实例启动以后,其监听端口号,这个配置的覆盖[-c config file] 指定的配置文件中的端口

-v 代码调试模式(verbose)可以输出更多的信息

假设我们自己已经通过OpenSSL生成了相关的CA证书,和服务器端自签名公钥和私钥,客户端的自签名公钥和私钥。其位置分布存储在:

(1) CA证书的位置

D:\mosquitto\certificates\ca.crt

(2) 服务器端的自签名的公钥的地址

D:\mosquitto\certificates\server.crt

(3) 服务器端的自签名的私钥的地址

D:\mosquitto\certificates\server.key


则其单向的SSL的mosquitto服务器端的配置文件(Configuration)的配置方式如下:

假设下面的配置存储在一个名为D:\mosquitto\twowayssl.conf的文本文件中,

# See also the mosquitto-tls man page.

# At least one of cafile or capath must be defined. They both 
# define methods of accessing the PEM encoded Certificate 
# Authority certificates that have signed your server certificate 
# and that you wish to trust.
# cafile defines the path to a file containing the CA certificates.
# capath defines a directory that will be searched for files
# containing the CA certificates. For capath to work correctly, the
# certificate files must have ".crt" as the file ending and you must run
# "c_rehash <path to capath>" each time you add/remove a certificate.
cafile D:\mosquitto\certificates\ca.crt
#capath

# Path to the PEM encoded server certificate.
certfile D:\mosquitto\certificates\server.crt

# Path to the PEM encoded keyfile.
keyfile D:\mosquitto\certificates\server.key

# This option defines the version of the TLS protocol to use for this listener.
# The default value will always be the highest version that is available for
# the version of openssl that the broker was compiled against. For openssl >=
# 1.0.1 the valid values are tlsv1.2 tlsv1.1 and tlsv1. For openssl < 1.0.1 the
# valid values are tlsv1.
tls_version tlsv1

# By default a TLS enabled listener will operate in a similar fashion to a
# https enabled web server, in that the server has a certificate signed by a CA
# and the client will verify that it is a trusted certificate. The overall aim
# is encryption of the network traffic. By setting require_certificate to true,
# the client must provide a valid certificate in order for the network
# connection to proceed. This allows access to the broker to be controlled
# outside of the mechanisms provided by MQTT.
require_certificate true

# If require_certificate is true, you may set use_identity_as_username to true
# to use the CN value from the client certificate as a username. If this is
# true, the password_file option will not be used for this listener.
use_identity_as_username true


从上面可以看出,双向和单项认证的区别是,除了需要单向SSL认证需要的CA的证书,服务器端的公钥和私钥的证书之外,还需要开启下面的两个开关。</span>

# By default a TLS enabled listener will operate in a similar fashion to a
# https enabled web server, in that the server has a certificate signed by a CA
# and the client will verify that it is a trusted certificate. The overall aim
# is encryption of the network traffic. By setting require_certificate to true,
# the client must provide a valid certificate in order for the network
# connection to proceed. This allows access to the broker to be controlled
# outside of the mechanisms provided by MQTT.
require_certificate true

# If require_certificate is true, you may set use_identity_as_username to true
# to use the CN value from the client certificate as a username. If this is
# true, the password_file option will not be used for this listener.
use_identity_as_username true

则可以通过下面的方式启动mosquitto服务器端的双向的SSL服务。

mosquitto D:\mosquitto\twowayssl.conf -p 1885 -v
版权声明:本文为博主原创文章,未经博主允许不得转载。

在MQTT中使用SSL/TLS提高安全性

在MQTT中使用SSL/TLS提高安全性当我开始使用MQTT时, 发现比较容易找到使用SSL/TLS验证去加密与代理之间的数据的相关资料。OwnTracks项目甚至提供了一个设置CA及签名的一个脚本,...
  • moxiaomomo
  • moxiaomomo
  • 2016年06月17日 10:34
  • 12630

[12]MQTT mosquitto 单向SSL认证的配置方式

我们知道,MQTT mosquitto支持单向和双向的SSL认证,首先咱们来看一下单项认证的配置文件应该如何配置。所谓的单向SSL证书,指的是,MQTT的客户端访问MQTT的服务器端的时候,如果用到了...
  • chancein007
  • chancein007
  • 2015年05月31日 22:47
  • 6834

android mosquitto客户端使用SSL功能的具体操作总结(android mqtt ssl 加密)

在开发Java版mosquitto客户端程序时需要使用paho库,如果开发的java客户端要用ssl功能,则需要Bouncy Castle库;在使用ssl功能时,需要证书文件进行进行身份认证,但在测...
  • PZ0605
  • PZ0605
  • 2016年07月26日 10:19
  • 2484

MQTT配置安全策略

最近在mac上部署了MQTT服务,直接用brew install mqtt,然后通过/usr/local/Cellar/mosquitto/1.4.11/etc/mosquitto找到目录下的mosq...
  • u013883974
  • u013883974
  • 2017年02月27日 11:59
  • 1497

esp8266与mosquitto的mqtt的ssl通讯实现(一)

将esp8266与mosquitto进行mqtt的ssl加密通讯过程之艰辛,资料程序都没有完整的,问题也很多,好在有CSDN,GitHub,Google等等,大家技术分享和技术问答,所以打算将过程写出...
  • uniom
  • uniom
  • 2016年12月29日 22:22
  • 3756

工业物联网的云端协议将以MQTT+SSL/TLS为主,协议格式以JSON为主

作者:老司 链接:https://zhuanlan.zhihu.com/p/26241158 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 工业物联网是什么? 简...
  • sijigang
  • sijigang
  • 2017年04月08日 15:36
  • 4730

Mosquito使用SSL/TLS进行安全通信时的使用方法 ------生成和发布证书openssl

MQTT作为android客户端的push消息推送协议。android客户端需要通过SSL/TLS连接mqtt代理服务器,实现消息的加密传输。实现这个流程需要提供两个方面的支持,一个是mqtt协议客户...
  • chenyefei
  • chenyefei
  • 2016年09月18日 12:25
  • 475

SSL/TLS单向双向认证原理

最近在搞一个项目,其中要用到安全传输,研究了下SSL/TLS单向双向认证。 1. SSL/TLS单向认证:客户端会认证服务器端身份,服务器端不对客户端进行认证 2. SSL/TLS双向认证...
  • self_examination
  • self_examination
  • 2015年07月26日 18:32
  • 2745

在MQTT服务器mosquitto上使用SSL/TSL

准备工作: 两台电脑,Window系统电脑称为本地电脑,Linux 系统电脑称为服务器电脑。 1、在本地电脑上下载mosquitto的源码,下载地址http://mosquitto.org/files...
  • peakguy
  • peakguy
  • 2017年05月11日 16:03
  • 1560

SSL/TLS 双向认证(三) -- ESP8266与mosquitto的MQTT双向认证

ESP8266与mosquitto的MQTT双向认证
  • ustccw
  • ustccw
  • 2017年08月09日 11:29
  • 1820
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[11]MQTT mosquitto 双向SSL认证配置方式
举报原因:
原因补充:

(最多只允许输入30个字)