Rabbitmq 无需重启即可重新加载/刷新新证书

Posted

技术标签:

【中文标题】Rabbitmq 无需重启即可重新加载/刷新新证书【英文标题】:Rabbitmq reload/refresh new certificates without restart 【发布时间】:2018-12-12 11:37:24 【问题描述】:

我在我的 Rabbitmq 服务器中使用自签名证书,并且代理使用 SSL 端口成功启动。我现在正在尝试更新/使用新的 SSL 证书、SSL 密钥和信任库,但我不想重新启动正在运行的 rabbitmq 服务器,因为我的应用程序应该连续运行。我在网上查看了在运行时刷新/重新加载 erlang/rabbitmq 以读取/重新加载这些新 SSL 证书的解决方案,我偶然发现了他们建议使用的几个链接 - rabbitmqctl eval "ssl:stop(), ssl:start()." to reload certs

该命令运行良好,并且新的 SSL 证书在没有 rabbitmq 重启的情况下被刷新,但是消费者/连接是 RESET 因为我的应用程序无法再从队列中读取消息。

你能帮我解决这个问题吗?我喜欢在不重新启动我的 rabbitmq 或应用程序的情况下重新加载新的 SSL 证书,并且 rabbitmq 必须在我的应用程序中正常工作而无需任何连接重置。 如果不是请建议我如何重新建立连接,以便我的应用程序按预期运行。

【问题讨论】:

嘿,让我们把它变成一个“活死人”的帖子。我也有同样的问题。似乎在更新证书并运行之后---> rabbitmqctl eval "ssl:stop(), ssl:start()."重新加载证书从提示返回一个 OK 值。和你一样,似乎连接已被重置,最重要的是,只要 API 的管理界面“损坏”并且不再可访问......是否有关于如何做到这一点的文档化方法?请注意,这不是集群安装。 【参考方案1】:

结果是较新版本的 Erlang 会自动更新其 PEM 缓存,因此您需要做的就是放置新证书,然后等待几分钟。

如果需要尽快强制使用新证书,可以使用

rabbitmqctl eval 'ssl:clear_pem_cache().'

这将重新加载证书不会断开任何发布者或消费者的连接。

【讨论】:

以上是关于Rabbitmq 无需重启即可重新加载/刷新新证书的主要内容,如果未能解决你的问题,请参考以下文章

无需重启服务器即可更改静态内容(html、css、JS) Wildfly 8

无需重启即可安装 Jenkins 插件

Angular App 无需重新编译即可动态加载插件

crud 操作后无需重新加载即可刷新角度材料表

无需重新加载页面即可删除 SQL 值(AJAX、PHP)

Jcrop 不刷新新选择的图像