最近把前端页面由原来的http升级为了https,发现之前ActiveMQ提供的ws不能强求了,https服务下要求升级到wss。全网搜索了下,没有找到一个靠谱的文档
一、 证书准备
使用wss连接服务必须使用域名+端口,而不能使用ip+端口,这里需要准备一个域名,并且将该域名解析到部署ActiveMQ的服务器,接着给域名申请一个SSL证书,这里是在阿里云上申请的免费证书。
- 下载在阿里云上申请证书,选择Tomcat类型
- 解压下载的证书会得到一个pfx格式文件,和一个txt格式的文件(证书密码)
- 将pfx格式的证书转换为jks格式,这里使用keytool工具,
keytool -importkeystore -srckeystore D:\<cert_name>.pfx -destkeystore D:\<cert_name>.jks-srcstoretype PKCS12 -deststoretype JKS
输入命令之后会让输入三次密码,建议三次都使用解压后得到的txt文件中的密码。这样我们就得到了一个jks格式文件。
- 上传jks格式的证书到ActiveMQ部署服务器,这里我上传到ActiveMQ安装目录下的conf目录
- 修改conf目录下的activemq.xml
vim activemq.xml
在broker
下增加以下配置
<sslContext><sslContext keyStore="file:${activemq.conf}/证书名字.jks" keyStorePassword="证书密码" /></sslContext>
修改broker
中transportConnectors
<transportConnectors><!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB --><transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/><transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/><transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/><transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/><transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/><transportConnector name="wss" uri="wss://0.0.0.0:61615?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/></transportConnectors>
至此,配置已经修改完毕,保存退出
- 重启ActiveMQ
- 如果是阿里云的ECS,别忘了在安全组中打开6165端口