首页 > 解决方案 > Rabbitmq 无需重启即可重新加载/刷新新证书

问题描述

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

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

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

标签: rabbitmqssl-certificatespring-amqpspring-rabbitrabbitmqctl

解决方案


结果是较新版本的 Erlang 会自动更新他们的 PEM 缓存,所以您需要做的就是将新证书放在适当的位置,然后等待几分钟。

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

rabbitmqctl eval 'ssl:clear_pem_cache().'

这将在不断开任何发布者或消费者的情况下重新加载证书。


推荐阅读