RabbitMQ 3 使用内网自签SSL证书

操作系统:Linux

RabbitMQ 3 编译安装

 

在内网项目中,需要使用到RabbitMQ加上SSL

让前端连接安全的WSS协议

内网IP自签证书参考如下配置

OpenSSL签发内网IP的SSL证书

 

rabbitmq默认启动是可以不用配置文件的

使用SSL则需要rabbitmq的配置文件,也就是rabbitmq.conf(老版本则是rabbitmq.config)

cd到/etc/rabbitmq目录下

cd /etc/rabbitmq

如果该目录下没有rabbitmq.conf则新建一个

 

touch rabbitmq.conf && vim rabbitmq.conf

填入如下内容

listeners.ssl.default = 5671 #默认的SSL监听端口
ssl_options.cacertfile = /www/cert/rootCA.pem  # CA根证书
ssl_options.certfile   = /www/cert/192.168.1.180.crt # 公钥
ssl_options.keyfile    = /www/cert/192.168.1.180.key # 私钥

web_stomp.ssl.port       = 15671 # webstomp的wss监听端口
web_stomp.ssl.backlog    = 1024 
web_stomp.ssl.cacertfile = /www/cert/rootCA.pem # 同上面
web_stomp.ssl.certfile   = /www/cert/192.168.1.180.crt # 同上面
web_stomp.ssl.keyfile    = /www/cert/192.168.1.180.key # 同上面

系统防火墙开放5671和15671端口

firewall-cmd --zone=public --add-port=5671/tcp --permanent
firewall-cmd --zone=public --add-port=15671/tcp --permanent
firewall-cmd --reload

如果没有启用web-stomp服务则还需要启动该插件

rabbitmq-plugins enable rabbitmq_web_stomp

重启rabbitmq服务

systemctl restart rabbitmq-server

查看运行状态

systemctl status rabbitmq-server

已经成功应用了/etc/rabbitmq/rabbitmq.conf配置文件

 

到网页管理端查看配置

使用JS代码进行验证

验证的HTML+JS源码如下

直接用浏览器打开之后在控制台中就可以看到输出

<!DOCTYPE html>
<html>
<head>
<title>demo</title>
</head>
<body>
<h1>demo</h1>
<script src="https://cdn.bootcdn.net/ajax/libs/stomp.js/2.3.3/stomp.min.js"></script>

<script>
const ip = "192.168.1.180"
const port = "15671"
const virtual_host = "test"
const username = "test"
const password = "test"
const exchange_name = "amq.fanout"

var client;
var isConnected = false;
var reconnectTimer;

function connectToRabbitMQ(){
// 创建一个WebSocket连接对象
var socket = new WebSocket(`wss://${ip}:${port}/ws`);
// 使用stomp.js创建Stomp客户端
client = Stomp.over(socket);
// 连接到RabbitMQ的STOMP端口
client.connect(username, password, onConnect, errorCallback, virtual_host);
}

// 连接成功后的回调函数
function onConnect(frame) {
console.log('Connected:', frame);
// 设置连接状态为true
isConnected = true;

// 清除重连定时器
clearTimeout(reconnectTimer);

// 在这里可以执行其他操作,如订阅、发送消息等

// 接收消息
client.subscribe(`/exchange/${exchange_name}`, function (message) {
console.log('Received message:', message.body);
}, { 'id': 'sub-' + Math.random().toString(36).substr(2, 10) });

// 发送消息到队列
let message = "aaaaaaaaaaaaaaaaaaaaaa"
client.send(`/exchange/${exchange_name}`,
{ 'persistent': true }, // 消息持久化
message);
}

function errorCallback(e){
console.log('发生了错误:', e);
// 设置连接状态为false
isConnected = false;
// 设置重连定时器,例如每隔 1 秒尝试重新连接
reconnectTimer = setTimeout(connectToRabbitMQ, 1000);
}

connectToRabbitMQ()
</script>
</body>
</html>

 

 

《RabbitMQ 3 使用内网自签SSL证书》为 九城 原创,创作不易!转载请注明出处!感谢!
文章地址:https://blog.minkse.cn/rabbitmq-3-%e4%bd%bf%e7%94%a8%e5%86%85%e7%bd%91%e8%87%aa%e7%ad%bessl%e8%af%81%e4%b9%a6/
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇