2019独角兽企业重金招聘Python工程师标准>>>

SSL安全认证

1. 文件创建

使用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

2. 创建openSSL各种命令的配置文件:openssl.conf

[ ca ]
default_ca = rmqca[rmqca]
dir = .
certificate = $dir/cacert.pem
database = $dir/index.txt
new_certs_dir = $dir/certs
private_key = $dir/private/cakey.pem
serial = $dir/serialdefault_crl_days = 7
default_days = 365
default_md = sha1policy = rmqca _policy
x509_extensions = certificate_extensions[ rmqca _policy ]
commonName = supplied
stateOrProvinceName = optional
countryName = optional
emailAddress = optional
organizationName = optional
organizationalUnitName = optional[ certificate_extensions ]
basicConstraints = CA:false[ req ]
default_bits = 2048
default_keyfile = ./private/cakey.pem
default_md = sha1
prompt = yes
distinguished_name = root_ca_distinguished_name
x509_extensions = root_ca_extensions[ root_ca_distinguished_name ]
commonName = hostname[ root_ca_extensions ]
basicConstraints = CA:true
keyUsage = keyCertSign, cRLSign[ client_ca_extensions ]
basicConstraints = CA:false
keyUsage = digitalSignature
extendedKeyUsage = 1.3.6.1.5.5.7.3.2[ server_ca_extensions ]
basicConstraints = CA:false
keyUsage = keyEncipherment
extendedKeyUsage = 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 ]

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

3.  生成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

4.  生成服务端证书

生成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

5.  生成客户端证书

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

# cd ..# lsserver 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也列出了你颁发过的证书

6. 启动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安全认证了。

首先创建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 &

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

转载于:https://my.oschina.net/lzhaoqiang/blog/700755

RabbitMQ SSL安全认证相关推荐

  1. RabbitMQ SSl安全认证流程

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

  2. php使用curl库进行ssl双向认证

    官方文档: http://www.php.net/manual/zh/function.curl-setopt.php#10692 官方举例: <?php curl_setopt($ch, CU ...

  3. (chap8 确认访问用户身份的认证) SSL客户端认证

    SSL客户端认证是借由HTTPS的客户端证书完成的认证方式.凭借客户端整数认证,服务器可确认访问是否来自自己登陆的客户端. 1. 步骤 step1. 接收到需要认证资源的请求,服务器会发送 Certi ...

  4. php curl 不验证ssl,PHP Curl https跳过ssl证书认证报错记录及解决

    PHP Curl https跳过ssl证书认证报错记录及解决 function get($url = '', $cookie = '') { $ch = curl_init(); curl_setop ...

  5. nginx添加ssl证书认证

    让nginx支持ssl证书认证首先安装上openssl,然后执行以下命令: openssl genrsa -out sim.key 1024 openssl req -new -key sim.key ...

  6. 服务器双向认证 原理,什么叫SSL双向认证 SSL双向认证过程是怎样的

    我们都知道SSL认证能够分成SSL双向认证和SSL单向认证.那么,什么是SSL双向认证?SSL双向认证过程又是怎样的?小编就在接下来的内容为各位详细讲述. 什么叫SSL双向认证 SSL双向认证则是需要 ...

  7. SSL双向认证和SSL单向认证的区别

    双向认证 SSL 协议要求服务器和用户双方都有证书.单向认证 SSL 协议不需要客户拥有CA证书,具体的过程相对于上面的步骤,只需将服务器端验证客户证书的过程去掉,以及在协商对称密码方案,对称通话密钥 ...

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

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

  9. nginx ssl 双向认证

    Nginx的浏览器/服务器双向SSL证书认证配置 文章分类:操作系统 最近的项目中需要安全性控制,而我又懒得改动后台的程序代码,故而想在反向代理层加入SSL证书验证. 一直在用Nginx做反向代理,但 ...

  10. java使用bks双向认证_客户端与服务器SSL双向认证(客户端:Android

    客户端与服务器SSL双向认证(客户端Android-服务端vc)-含源码(一)服务端已经生成了client.p12.server.p12.ca.p12:主要实现客户端过程(二)目录结构(三)客户端注 ...

最新文章

  1. [转]ASP.NET中常用输出JS脚本的类
  2. gsoap中的数据结构中不允许有野指针
  3. threading模块使用_threading简介(创建多线程的两种方法)★
  4. STM32为何在诸多的单片机中脱颖而出?
  5. 上大学了,但学校一般,该怎么办?
  6. Web渗透实验:基于Weblogic的一系列漏洞
  7. 如何在Linux下安装nginx
  8. html5游戏制作入门系列教程(二)
  9. JavaScript并非“按值传递”
  10. 静态的顺序表(C语言实现)
  11. 2018美国基金业年鉴-数据图表简版
  12. 当下最实用计算机编程语言,目前最流行的计算机编程语言是什么?
  13. 云计算基础技术及解决方案介绍
  14. Android Studio内置JDK源码关联和断点错乱问题解决
  15. gpgga格式读取MATLAB,gpgga数据格式
  16. STM32机器人控制开发教程No.4 使用串口通信控制电机(基于HAL库)
  17. [VS2010]逸雨清风 永久稳定音乐外链生成软件V0.1
  18. 左右广告悬浮框html,js 左右悬浮对联广告特效代码
  19. 企查查某 2022/7/13 随机请求头JS逆向:★★
  20. C# WebApi 返回详细错误信息

热门文章

  1. atitit.提升开发效率---MDA 软件开发方式的革命(5)----列表查询建模
  2. WSL : llvm、clang 和XTP
  3. 摘要算法、对称加密、非对称加密、数字签名、数字证书浅析
  4. 独家专访 | “共同基金之父”纽伯格的公司(NeubergerBerman)要在中国做什么?
  5. (转)神秘的比特币地址详解
  6. Linux宝库快讯 | OpenStack中国日更名OpenInfra中国日
  7. 毕设题目:Matlab智能算法VRP(车辆路径规划)
  8. 【优化预测】基于matlab布谷鸟搜索算法优化SVM预测【含Matlab源码 1525期】
  9. 【路径规划】基于matlab GUI机器人路径规划【含Matlab源码 1007期】
  10. 【优化算法】多目标蝗虫优化算法(MOGOA)【含Matlab源码 937期】