SSL安全认证

  • 文件创建

使用rmqca作为RabbitMQ的认证中心,certs文件用于存放CA产生的证书,private存放CA的密钥,改变其权限不允许第三方访问,serial存放CA证书的序列号,index.txt存放CA颁发的证书

# mkdir rmqca
# cd rmqca
# mkdir certs private
# chmod 700 private
# echo 01 > serial
# touch index.txt
  • 创建openSSL各种命令的配置文件:openssl.conf
    [ ca ]default_ca = rmqca[rmqca]dir = .certificate = $dir/cacert.pemdatabase = $dir/index.txtnew_certs_dir = $dir/certsprivate_key = $dir/private/cakey.pemserial = $dir/serialdefault_crl_days = 7default_days = 365default_md = sha1policy = rmqca _policyx509_extensions = certificate_extensions[ rmqca _policy ]commonName = suppliedstateOrProvinceName = optionalcountryName = optionalemailAddress = optionalorganizationName = optionalorganizationalUnitName = optional[ certificate_extensions ]basicConstraints = CA:false[ req ]default_bits = 2048default_keyfile = ./private/cakey.pemdefault_md = sha1prompt = yesdistinguished_name = root_ca_distinguished_namex509_extensions = root_ca_extensions[ root_ca_distinguished_name ]commonName = hostname[ root_ca_extensions ]basicConstraints = CA:truekeyUsage = keyCertSign, cRLSign[ client_ca_extensions ]basicConstraints = CA:falsekeyUsage = digitalSignatureextendedKeyUsage = 1.3.6.1.5.5.7.3.2[ server_ca_extensions ]basicConstraints = CA:falsekeyUsage = keyEnciphermentextendedKeyUsage = 1.3.6.1.5.5.7.3.1

配置详情

[ ca ]

是ca的名称设置,

[rmqca]

设置CA颁发证书和密钥存放路径以及过期时间 (365天),每隔7天提供一个CRL文件,并且使用shal作为哈希函数生成证书;

[ rmqca _policy ]

告诉openssl在证书中哪些是必填项,supplied为必选,optional为可选

[ certificate_extensions ]

false值代表CA不能将自己作为CA----无法用于签名和颁发新证书

[ req ]

指明书生成2048位的密钥,密钥安全方面来说这是最小的数字,,密钥被写入private下的cakey.pem文件,默认使用shal作为默认的哈希函数

[ root_ca_extensions ]

根扩展用于签名其他证书

[ client_ca_extensions ]

用于客户端的证书认证

[ server_ca_extensions ]

用于加密数据以及认证服务器

  • 生成CA证书
    # openssl req -x509 -config openssl.cnf -newkey rsa:2048 -days 365 -out cacert.pem -outform PEM -subj /CN=MyRmqca/ -nodes# openssl x509 -in cacert.pem -out cacert.cer -outform DER
  • 生成服务端证书

生成RSA密钥然后为其提供证书

# cd ..
# ls
rmqca
# mkdir server
# cd server
# openssl genrsa -out key.pem 2048
# openssl req -new -key key.pem -out req.pem -outform PEM -subj /CN=$(hostname)/O=server/ -nodes
# cd ../rmqca
# openssl ca -config openssl.cnf -in ../server/req.pem -out ../server/cert.pem -notext -batch -extensions server_ca_extensions
# cd ../server
# openssl pkcs12 -export -out keycert.p12 -in cert.pem -inkey key.pem -passout pass:MySecretPassword
  • 生成客户端证书

生成RSA密钥然后为其提供证书

# cd ..
# ls
server testca
# mkdir client
# cd client
# openssl genrsa -out key.pem 2048
# openssl req -new -key key.pem -out req.pem -outform PEM  -subj /CN=$(hostname)/O=client/ -nodes
# cd ../rmqca
# openssl ca -config openssl.cnf -in ../client/req.pem -out ../client/cert.pem -notext -batch -extensions client_ca_extensions
# cd ../client
# openssl pkcs12 -export -out keycert.p12 -in cert.pem -inkey key.pem -passout pass:MySecretPassword

这样就生成了三份证书,此时serial已经变为03,index.txt也列出了你颁发过的证书

  • 启动RabbitMQ的SSL监听器

为方便,将生成的目录拷贝到/etc/rabbitmq/ssl下

cp -r rmqca /etc/rabbitmq/sslcp -r server /etc/rabbitmq/sslcp -r client /etc/rabbitmq/ssl

启用:

vim rabbitmq.config[{ssl, [{versions, ['tlsv1.2', 'tlsv1.1']}]},{rabbit, [{tcp_listeners, [5672]},{ssl_listeners, [5671]},{ssl_options, [{cacertfile,"/etc/rabbitmq/ssl/rmqca/cacert.pem"},{certfile,"/etc/rabbitmq/ssl/server/cert.pem"},{keyfile,"/etc/rabbitmq/ssl/server/key.pem"},{verify, verify_peer},{fail_if_no_peer_cert, true},{versions, ['tlsv1.2', 'tlsv1.1']}]}]}].

这样就可以支持普通连接和ssl连接,端口分别为5672和5671

重启rabbitmq服务即可看到已经监听5671端口
7. 使用keytool导入证书

将连接服务器所需要的证书导入到密钥库中

# keytool -import -alias server1 -file /etc/rabbitmq/ssl/server/cert.pem -keystore /etc/rabbitmq/ssl/rabbitstore

会要求输入密码,至少6位数

之后将SSL安全认证产生的文件与rabbitmq.config拷贝到其他机器上,就可以开启RabbitMQ的SSL安全认证了。

若报错-bash: keytool: 未找到命令

配置环境变量
vim /etc/profile  ## 添加以下三句export到文件最后 注意JAVA_HOME的目录为你解压jdk的目录版本为你下载的jdk版本
export JAVA_HOME=/opt/jdk1.8.0_152/
export  CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

首先创建SSL文件夹,在rm2和rmq3机器上分别执行

mkdir /etc/rabbitmq/ssl

复制

scp -r /etc/rabbitmq/ssl  root@rmq2:/etc/rabbitmq/sslscp -r /etc/rabbitmq/rabbitmq.config  root@rmq2:/etc/rabbitmq/scp -r /etc/rabbitmq/ssl  root@rmq3:/etc/rabbitmq/sslscp -r /etc/rabbitmq/rabbitmq.config  root@rmq3:/etc/rabbitmq/

重启:

rabbitmqctl stoprabbitmq-server &

可以看到启动的两个端口:5671 5672

————————————————
版权声明:本文为CSDN博主「大神中的传说」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zou100/article/details/100521976

RabbitMQ SSl安全认证流程相关推荐

  1. 域名申请·多域名SSL证书申请·SSL证书认证流程·CAA解析记录添加

    环境:VPS:CentOS8 1.申请域名 通过阿里云申请一个域名就好,博主申请了个人域名.top,第一年6元 2.添加一条IPV4的DNS解析记录 阿里云-控制台-域名解析-解析设置-添加新纪录 这 ...

  2. java Rabbitmq ssl 安全连接详细流程(附图)

    Rabbitmq ssl 安全连接流程 1 生成证书 2 配置服务端 3 编辑java客户端 1 生成证书 git clone https://github.com/michaelklishin/tl ...

  3. 什么是SSL双向认证,与单向认证证书有什么区别?

    SSL/TLS 证书是用于用户浏览器和网站服务器之间的数据传输加密,实现互联网传输安全保护,大多数情况下指的是服务器证书.服务器证书是用于向浏览器客户端验证服务器,这种是属于单向认证的SSL证书.但是 ...

  4. SSL双向认证和SSL单向认证的流程和区别

    refs: SSL双向认证和SSL单向认证的区别 https://www.jianshu.com/p/fb5fe0165ef2 图解 https 单向认证和双向认证! https://cloud.te ...

  5. SSL/TLS算法流程解析

    SSL/TLS 早已不是陌生的词汇,然而其原理及细则却不是太容易记住.本文将试图通过一些简单图示呈现其流程原理,希望读者有所收获. 一.相关版本 Version Source Description ...

  6. HTTPS|SSL笔记-SSL双向认证成功握手过程(含wireshark分析)

    这里只研究连接过程. 整体的流程是这样的 前三个那个SYN.SYN ACK.ACK是TCP三次握手,就不说了. 1. 握手成功后,客户端发送自己支持的加密套,和随机数给服务端,也就是Client He ...

  7. 浏览器获取CA认证流程

    首先说说证书的签发过程: 服务方 S 向第三方机构CA提交公钥.组织信息.个人信息(域名)等信息并申请认证: CA 通过线上.线下等多种手段验证申请者提供信息的真实性,如组织是否存在.企业是否合法,是 ...

  8. 浏览器获取服务器CA证书与认证流程-HTTPS

    证书的签发过程 服务方 S 向第三方机构CA提交公钥.组织信息.个人信息(域名)等信息并申请认证: CA 通过线上.线下等多种手段验证申请者提供信息的真实性,如组织是否存在.企业是否合法,是否拥有域名 ...

  9. iwebshop商户手机模板_认证小红书企业号手机端最详细的认证流程!认证之前看这篇!...

    提到种草,小红书是必不可少的app,不论是美妆护肤还是网红圣地,又或者日用百货等等,都有博主们精心撰写的笔记,每一篇都是种草干货,正是因为有这些与消费强相关的内容产生,帮助消费者的进行购买决策,在小红 ...

最新文章

  1. Java 知识全面总结:并发编程+JVM+设计模式+常用框架+....
  2. Java的最大优势还是跨平台么?
  3. java fx消息通知,Java的FX 2警报声
  4. 时间怎么算用计算机,抖音珍惜时间计算器怎么用
  5. shell脚本详解(四)——循环语句之while循环和until循环(附加例题及解析)
  6. 电气工程及其自动化学不学c语言,电气工程及其自动化学什么 就业方向有哪些...
  7. java radio_java radioButton
  8. git提交了不需要的文件夹或者文件怎么办
  9. git 解决合并冲突
  10. STM32 相关RTOS
  11. linux判断网卡能否上网,网卡坏了有什么现象?判断网卡是否坏了的方法
  12. 电瓶车续航测试软件,【图】2019年新能源车测试盘点:续航能耗篇_汽车之家
  13. 分治法解决赛程安排问题
  14. 揭秘短网址背后的灰色产业
  15. android 代码控制TextView的字体加粗
  16. php 读取mysql 返回xml_用php解析xml并保存到mysql
  17. 批处理 检测U盘插入并自动备份文件
  18. Java程序员学习Rust编程
  19. golang websocket 一个语音聊天室
  20. 【高精度定位】关于GPS、RTK、PPK三种定位技术的探讨

热门文章

  1. handoff 流程
  2. redhat6.1安装oracle11g(新手,搞了7天)
  3. 《CCNP ROUTE 300-101学习指南》——1.7节复习题
  4. 《Adobe Illustrator CS4中文版经典教程》—第0课0.15节创建剪切蒙版
  5. 记录一次:com.badlogic.gdx.utils.GdxRuntimeException: Error loading audio file: startAni.mp3
  6. 【无标题】回收二手锅炉,燃油锅炉,二手燃煤锅炉,有机热载体锅炉,废旧锅炉,立式锅炉,卧式锅炉
  7. 实现手机登录(短信验证)
  8. 一名优秀的项目经理,每天都在忙什么?想什么?
  9. Arduino Pro Micro 实现游戏手柄Joysticks
  10. 2005年日语一级听力原文