EMQXMQTT服务器启用SSL/TLS安全连接EMQ

TLS/SSL协议下的通讯过程分为两部分,第一部分是握手协议。握手协议的目的是鉴别对方身份并建立一个安全的通讯通道。握手完成之后双方会协商出接下来使用的密码套件和会话密钥;第二部分是record协议,record和其他数据传输协议非常类似,会携带内容类型,版本,长度和荷载等信息,不同的是它所携带的信息是加密了的。

通常来说,我们会需要数字证书来保证TLS通讯的强认证。数字证书的使用本身是一个三方协议,除了通讯双方,还有一个颁发证书的受信第三方,有时候这个受信第三方就是一个CA。和CA的通讯,一般是以预先发行证书的方式进行的。也就是在开始TLS通讯的时候,我们需要至少有2个证书,一个CA的,一个EMQX的,EMQX的证书由CA颁发,并用CA的证书验证。

获得一个真正受外界信任的证书需要到证书服务提供商进行购买。在实验室环境,我们也可以用自己生成的证书来模拟这个过程。下面我们分别以这两种方式来说明EMQX服务器的SSL/TLS启用过程。

注意:购买证书与自签名证书的配置,读者根据自身情况只需选择其中一种进行测试。

如果有购买证书的话,就不需要自签名证书。

为方便EMQX配置,请将购买的证书文件重命名为emqx.crt,证书密钥重命名为emqx.key。

在这里,我们假设您的系统已经安装了OpenSSL。使用OpenSSL附带的工具集就可以生成我们需要的证书了。

首先,我们需要一个自签名的CA证书。生成这个证书需要有一个私钥为它签名,可以执行以下命令来生成私钥:

opensslgenrsa-outca.key2048这个命令将生成一个密钥长度为2048的密钥并保存在ca.key中。有了这个密钥,就可以用它来生成EMQX的根证书了:

opensslreq-x509-new-nodes-keyca.key-sha256-days3650-outca.pem查看CA证书信息(可选):

opensslx509-inca.pem-noout-text根证书是整个信任链的起点,如果一个证书的每一级签发者向上一直到根证书都是可信的,那个我们就可以认为这个证书也是可信的。有了这个根证书,我们就可以用它来给其他实体签发实体证书了。

实体(在这里指的是EMQX)也需要一个自己的私钥对来保证它对自己证书的控制权。生成这个密钥的过程和上面类似:

opensslgenrsa-outemqx.key2048新建openssl.cnf文件,

[req]default_bits=2048distinguished_name=req_distinguished_namereq_extensions=req_extx509_extensions=v3_reqprompt=no[req_distinguished_name]countryName=CNstateOrProvinceName=ZhejianglocalityName=HangzhouorganizationName=EMQXcommonName=Servercertificate[req_ext]subjectAltName=@alt_names[v3_req]subjectAltName=@alt_names[alt_names]IP.1=BROKER_ADDRESSDNS.1=BROKER_ADDRESS然后以这个密钥和配置签发一个证书请求:

opensslreq-new-key./emqx.key-configopenssl.cnf-outemqx.csr然后以根证书来签发EMQX的实体证书:

opensslx509-req-in./emqx.csr-CAca.pem-CAkeyca.key-CAcreateserial-outemqx.pem-days3650-sha256-extensionsv3_req-extfileopenssl.cnf查看EMQX实体证书(可选):

opensslx509-inemqx.pem-noout-text验证EMQX实体证书,确定证书是否正确:

$opensslverify-CAfileca.pememqx.pememqx.pem:OK准备好证书后,我们就可以启用EMQX的TLS/SSL功能了。

在EMQX中mqtt:ssl的默认监听端口为8883。

将前文重命名后的emqx.key文件及emqx.crt文件拷贝到EMQX的etc/certs/目录下,并参考如下配置修改emqx.conf:

MQTTX版本要求:v1.3.2及以上版本

注意:在Certificate一栏只需选择CAsignedserver即可,使用购买证书在进行单向认证连接时不需要携带任何证书文件(CA文件也不需要携带)。

将前文中通过OpenSSL工具生成的emqx.pem、emqx.key及ca.pem文件拷贝到EMQX的etc/certs/目录下,并参考如下配置修改emqx.conf:

最后,打开EMQX的Dashboard在Listeners页面可以看到在8883端口上有一个mqtt:ssl连接。

EMQX研发工程师,负责EMQX的前端开发工作,也是MQTTX的开发者和维护者。

EMQX服务器支持单双向SSL、负载均衡SSL、X.509证书等多种安全认证,本文将介绍如何在EMQX中为MQTT启用双向SSL/TLS。

本指南着重于客户端连接,优先解答常见的EMQXSSL/TLS配置问题,以帮助用户快速上手TLS。

为了更多用户能体验到MQTToverQUIC为物联网消息传输带来的提升,我们将通过本文指导您如何从零开始上手使用MQTToverQUIC。

THE END
1.certumov代码签名证书700,ssldun当开发者使用Certum代码签名证书对软件进行签名时,实际上是将软件的一个哈希值与开发者的私钥相结合,生成一个数字签名。这个签名随后被附加到软件中,并在用户安装或运行软件时被验证。验证过程涉及使用Certum颁发的公钥来检查数字签名的有效性,从而确认软件自签名以来未被篡改,并且确实来自声称的开发者。https://www.163.com/dy/article/JNL2IASS0552LQCB.html
2.免费https证书申请首先,我们要安装certbot,这是一个可以自动化申请证书并应用在我们的网站的工具。 sudoaptupdatesudoaptinstallcertbot python3-certbot-nginx 1 2 这之后,我们就可以直接运行certbot来为我们自动申请证书并安装: sudocertbot--nginx 1 在这个过程中,你需要输入邮箱等信息用于申请证书,申请成功后,certbot会自动为你配置nghttps://blog.csdn.net/CUGB_NICET/article/details/145373317
3.Certum代码签名证书恶意软件、病毒、木马等威胁层出不穷,严重威胁着用户的数据安全和隐私保护。为了应对这一挑战,代码签名证书应运而生,成为保障软件安全的重要手段之一。而Certum,作为欧洲知名的数字证书颁发机构,其提供的代码签名证书在市场上广受好评,为软件开发者和用户提供了全面、可靠的安全保障。https://www.jianshu.com/p/02de54b2012e
4.Coabltstrike官方教程中文译版本在没有有效的代码签名证书的情况下,Cobalt Strike的Java签名小应用程序攻击是 无效 。本教程展示了如何用自己的代码签名证书来签署Cobalt Strike的Java签名小程序攻击。 Java Applet Attack Code Signing Tutorial Java Applet攻击代码签名: Java Smart Applet攻击 http://it.en369.cn/jiaocheng/1726333838a610945.html
5.Rancher自签名证书过期后,按照官网对应版本更新后服务启动报错自签名证书过期集群报错X509后,我集群是2.5.8的,安装官方文档: 步骤kubectl --insecure-skip-tls-verify -n kube-system delete secrets k3s-serving kubectl --insecure-skip-tls-verify delete secret serving-cert -n cattle-system rm -f /var/lib/ranch&hellihttps://forums.rancher.cn/t/rancher/1966
6.tlsprocessserver我尝试将 mssql 连接到我的 symfony 项目,但收到错误 SQLSTATE[08001]: [Microsoft][ODBC Driver 18 for SQL Server]SSL Provider: [error:1416F086:SSL 例程:tls_process_server_certificate:证书验证失败:自签名证书]所以我想在 pdo 概念上设置“TrustServerCertificate=yes”,但无法弄清楚它在 我尝试在 .https://qa.1r1g.com/sf/ask/5031842861/
7.使用自签名HTTPS证书反代OCP站点时,无法通过OBProxy连接通过OCP 部署 OB 集群时,如果在 OCP 配置项 ocp.site.url 配置了 HTTPS 协议的内网域名,且使用的是自签名证书,那么集群就无法通过 OBProxy 访问了,大概是因为 OBProxy 无法获取到集群相关信息。 尝试添加自签名 CA 证书到系统级证书库,在 shell 中生效,在 OBProxy 中未生效。 异常现象如下: 直连OB 集群的 OBShttps://ask.oceanbase.com/t/topic/35610403
8.在python使用SSL(HTTPS)qhqh我们有了证书和私钥了,下面就可以正式使用python建立一个HTTPS网站了。这里我使用框架实现,用的是twisted。使用的证书是之前用OPENSSL生成的自签名证书。 #-* -coding: utf-8 -* - from twisted.web import server, resource from twisted.internet import reactor,ssl https://blog.sina.com.cn/s/blog_5d18f85f0102xg3e.html
9.深入探索QtWebEngineCore:从基础原理到高级应用与技巧QWebEngineCertificateError 是一个基于 Qt WebEngine 的类,用于处理 SSL 证书错误。当浏览器遇到 SSL 证书错误时(例如,证书过期、自签名证书等),此类提供有关错误的详细信息,并允许您决定是否继续加载页面。 以下是处理 SSL 证书错误的一般步骤: 连接QWebEnginePage 的certificateError 信号: 当遇到 SSL 证书错误时https://developer.aliyun.com/article/1463314
10.用openssl做自签名证书寂寞暴走伤2.生成自签署证书 [root@localhost ~]#openssl req -new -x509 -key privatekey -out server.crt -days 365 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. http://blog.chinaunix.net/uid-30212356-id-5138330.html
11.全网最详细的https自签名教程,一文带你搞定所有配置及签名!事情是这样的,我们的前端页面里面用到一个组件service worker ,这个组件有个前提是必须得用安全的https,而我们的客户是在内网环境里面,所以就只能用自签名证书来搞,我一想这还不容易,就迅速的百度了一下随便找了个文章开始照猫画虎,很快就弄完了,但是弄完后发现还是有问题,而且https 还是报不安全,试了https://juejin.cn/post/7309158172853190682
12.codeserver完整搭建指南如果你在配置文档中使用的不是8080端口,请将目标URL最后的端口由8080改成自设的端口。 填写完后点击提交。 提交完成后,我们点击“配置文件” 将13-29行内容删除 删除前 删除后 看到“文件已保存“,则表示我们的反向代理已经配置完成。 访问建立的code-server https://blog.mashiro.pro/1022.html
13.ssl本模块提供了一个类 ssl.SSLSocket,它派生自 socket.socket 类型,并提供类似套接字的包装器,也能够对通过带 SSL 套接字的数据进行加密和解密。 它支持一些额外方法例如 getpeercert(),该方法可从连接的另一端获取证书,还有 cipher(),该方法可获取安全连接所使用的密码。https://docs.python.org/zh-cn/3.8/library/ssl.html
14.链式调用,可以自定义返回对象,支持Https和自签名证书,支持Code README OkHttpUtils 封装了okhttp的网络框架,支持大文件上传下载,上传进度回调,下载进度回调,表单上传(多文件和多参数一起上传),链式调用,可以自定义返回对象,支持Https和自签名证书,支持cookie自动管理,支持四种缓存模式缓存网络数据,支持301、302重定向,扩展了统一的上传管理和下载管理功能 https://github.com/angcyo/OkHttpUtils
15.JAVA开心超级签名系统源码+部署文档配置文件位置udidserver\bin\spring\kxapp.properties mysql.是数据库相关的配置,包括数据库名称,地址,密码用户名 protect.是数据保护的密码,存放的数据库种的证书和账号会使用这些密码加密, 请部署的时候使用网上的随机密码工具生成一些随机密码放这,这样就算数据库被脱裤,也无法得到证书数据 sign.部分是开心签名工具存https://www.dkewl.com/code/detail1331.html
16.使用数字签名标识包的源创建自己的证书(仅用于测试目的)。 PowerShell 命令 New-SelfSignedCertificate 可以使用安全哈希算法创建新的自签名证书,以便进行测试。 例如: PowerShell $params= @{ Type ='CodeSigningCert'Provider ='Microsoft Enhanced RSA and AES Cryptographic Provider'Subject ='CN=PS code signing Certificate 2'TextExtenshttps://technet.microsoft.com/zh-cn/library/ms141174.aspx
17.OSX服务器:续订描述文件管理器的代码签名证书代码签名证书的完整通用名称。 签发者的完整通用名称。 证书序列号为十六进制。 要获取代码签名证书的完整通用名称,请按照以下步骤操作: 打开/应用程序/实用工具/Keychain Access.app。 在左侧的“钥匙串”下方,选择“系统钥匙串”。 查找代码签名证书。它应该以“myserver.mydomain.comCode Signing Certificate”的格https://support.apple.com/zh-cn/101220
18.centos搭建codeserver配置HTTPS登录页自定义实现步骤其它综合这篇文章主要为大家介绍了centos搭建code-server及配置HTTPS、登录页自定义实现步骤详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪+ 目录 脚本之家 / 编程助手:解决程序员“几乎”所有问题!脚本之家官方知识库 → 点击立即使用 自定义登录页面 注:本版本基于4.11.0,在此之前版本,https://www.jb51.net/article/283544.htm
19.如何为服务器生成一个TLS证书openssl x509 -req -days 365 -inserver.csr -signkey server.key -out server.crt ? 解释:openssl x509 -req用于生成自签名证书,-days 365指定证书的有效期为365天,-in server.csr指定使用之前生成的CSR文件,-signkey server.key使用之前生成的私钥进行签名,-out server.crt指定输出的证书文件名为server.crhttps://www.8kiz.cn/archives/22033.html
20.数字证书原理腾讯云开发者社区数字证书 在前面我们讲到可以通过数字签名来证明一个人或者组织拥有一个公钥对应的私钥,因此我们可以把一个公钥看作一个数字身份标识,如果一个人可以发出使用该标识(公钥)对应的私钥签名的数据,则说明该用户是该数字身份标识的拥有者。 在现实生活中也有类似的身份证明,身份证明有匿名的,也有实名的。匿名的身份证明只是https://cloud.tencent.com/developer/article/2063429
21.代码签名工具,SSL精灵,PDF签名加密工具下载全自动完成SSL证书的申请、安装、续期等操作,提供Windows Server版本和Linux版本 SSL体检 检测SSL证书的部署健康状况 CSR生成及检查 生成证书请求文件CSR及检查CSR状态 创建PFX/SPC文件 创建/分离PFX文件,创建SPC/证书链(WosignCode包含该功能) 代码签名工具 https://www.wosign.com/Support/tool.htm
22.部分目录代理服务器管理(SunJavaSystemDirectoryServer创建目录代理服务器实例时,该实例具有默认的自签名证书。自签名证书是一个公钥/私钥对,其中公钥是由目录代理服务器自签名的。 查看默认的自签名证书 可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和DSCC 联机帮助。 查看默认的自签名证书。 $ dpadm show-cert instance-path defaultservercert 创https://docs.oracle.com/cd/E19957-01/820-3204/6neolgf17/index.html
23.Nginx实战:编译安装,在线升级,实现多域名http和https,自动跳转# 按照编译安装的参数,修改好自启动服务文件 [root@CentOS84-Nginx-IP08 ]#vim /usr/lib/systemd/system/nginx.service [root@CentOS84-Nginx-IP08 ]#cat /usr/lib/systemd/system/nginx.service [Unit] Description=nginx-high performance web server https://blog.51cto.com/shone/5146272
24.CertbotGet Certbot instructions My HTTP website is runningSoftwareApacheNginxHAProxyPleskOtherWeb Hosting ProductonSystemBitnamiFreeBSDWindowsOpenBSDmacOSWeb Hosting ServiceLinux (snap)Linux (pip) Help, I'm not sure! Use our instruction generator to find custom commands to get Certbot on your server's envirhttps://certbot.eff.org/
25.Caddy自动申请CA证书失败解决办法搜百谷key:与证书文件匹配的服务器私钥文件。 指定您自己的证书和密钥将禁用自动HTTPS,包括更改端口和将HTTP重定向到HTTPS。如果你正在管理自己的证书,那这些需要你自己去做。 使用自签名 1 tls self_signed 上面的语法将使用Caddy的默认TLS设置,Caddy生成并在内存中使用一个不可信的自签名证书,该证书持续7天,所以它一般仅http://sobaigu.com/caddy-acme-ca-failed.html
26.ESET在Windows10运行或者WindowsServer2022还是旧版本上接收自动 Windows 更新的用户将受到保护。若要更新操作系统,请遵循Microsoft官方指南:KB5022661 - Windows 对 Azure 代码签名程序的支持 - Microsoft支持。 升级到Windows 10 22H2时,请按照建议使用媒体创建工具。 具有脱机环境或禁用自动受信任根证书更新的用户必须安装Microsoft 身份验证根证书颁发机构 2020。 https://support-eol.eset.com/cn/trending_weol2023_10_2022.html
27.微软代码签名证书使用图文教程(微软代码签名证书使用图文教程怎么微软代码签名证书(Microsoft Authenticode Code Signing CA)是一种数字证书,用于对软件进行数字签名,通过使用微软代码签名证书,软件开发者可以确保其软件在传输过程中不被篡改,同时向用户证明软件的开发者身份和软件的完整性。 二、为什么需要使用微软代码签名证书? https://www.kdun.com/ask/58899.html
28.代码签名代码签名证书可帮客户通过互联网分发的软件、驱动程序等进行数字签名并盖上时间戳。数字签名可以确保终端的用户知道该软件是合法的,来自于经过认证的开发商,并且在互联网上传输过程中没有遭到篡改。https://www.easyssl.cn/product/code_signing.aspx