后来试过其实还是不太行,最终通过升级rocketmq版本来处理。
1. name server和broker都需要修改:进入 /home/rocketmq/rocketmq-4.7.0/bin,修改 runbroker.sh 和 runserver.sh(如果有runbroker.sh~ 和 runserver.sh~ 也修改下),分别加入如下配置:
# disable tls1.0
JAVA_OPT="${JAVA_OPT} -Dhttps.protocols=TLSv1.2"
JAVA_OPT="${JAVA_OPT} -Djdk.tls.disabledAlgorithms=SSLv3,RC4,MD5withRSA,DH,TLSv1"
JAVA_OPT="${JAVA_OPT} -Djdk.tls.client.protocols=TLSv1.1,TLSv1.2"
效果如下:
修改后,重启下 name server 和 broker
2. 如上述失败尝试,设定禁用的算法:编辑文件 /etc/profile,添加如下配置:
export _JAVA_OPTIONS="-Djdk.tls.disabledAlgorithms=SSLv3,RC4,MD5withRSA,TLSv1"
执行 source /etc/profile 使配置生效。
3. 还可以编辑文件 ${JAVA_HOME}/jre/lib/security/java.security,按如下配置:
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, DH keySize < 1024, \EC keySize <224, 3DES_EDE_CBC
4. 修改后,执行如下命令,
openssl s_client -connect 127.0.0.1:9876 -tls1
如果能如下图所示,TLSv1.0协议连接失败,则成功禁用TLSv1.0。
如果如下图所示,应该还是表示连接成功(但如果如上设置好后,头几次调用session id为空,但之后调用都是复现session id不为空的情况,但这种情况目前公司的扫描貌似扫描不出来,还有待观望):
参考文章: