zoukankan      html  css  js  c++  java
  • RabbitMQ消息队列(十四)-启用SSL安全通讯

    如果RabbitMQ服务在内网中,只有内网的应用连接,我们认为这些连接都是安全的,但是个别情况我们需要让RabbitMQ对外提供服务。这种情况有两种解决方案:

    1. 在RabbitMQ外层在封装一层应用,应用对外提供服务,本质来说RabbitMQ还是只对内网提供服务。相对更安全,但灵活性差。

    2. RabbitMQ直接对外提供服务。这时除了服务本身的安全性还要考虑数据在互联网传输过程中是否可能被拦截破解。业界标准的解决方案就是SSL。

    安装Git

    1、首先应该安装好必要的依赖包,省得在安装过程中出现各种问题。

    yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

    2、下载并编译git 
    下载、解压

    wget https://www.kernel.org/pub/software/scm/git/git-1.8.3.1.tar.gz
    tar xzf git-1.8.3.1.tar.gz

    编译并验证

    cd git-1.8.3.1
    make prefix=/usr/local/git all
    make prefix=/usr/local/git install
    echo "export PATH=$PATH:/usr/local/git/bin" >>/etc/bashrc
    source /etc/bashrc
    git --version

     安装成功

    生成证书

    首先确保已经安装好openssl,通常在安装WEB运行环境时都会自动安装。我就找了我之前的一个WEB服务器。 
    检测方法:

    openssl version

    在Google了一番之后,我发现了这篇文章:

    http://www.gettingcirrius.com/2013/01/configuring-ssl-for-rabbitmq.html

    国内的童鞋们也许需要通过代理才能访问,不过没关系,作者还在github上写了一些shell脚本方便生成证书,项目github地址为:

    https://github.com/Berico-Technologies/CMF-AMQP-Configuration

    可直接通过git命令进行clone到本地(最好新建个文件夹AMQPSSL):

    git clone https://github.com/Berico-Technologies/CMF-AMQP-Configuration.git  

    在clone后的项目目录中,doc文件夹下有详细的说明shell脚本如何使用。

    对RabbitMQ SSL支持官方文档感兴趣的童鞋,请移步:

    https://www.rabbitmq.com/ssl.html

    1. 确保已经安装好了openssl,具体安装方法请自行google;

    切换到 CMF-AMQP-Configuration/ssl 文件夹,运行

    sh setup_ca.sh MyRabbitMQCA  

    名称定义为”MyRabbitMQCA”,这个名字可以自行指定,用于在证书中显示证书颁发机构名。

    • 生成服务器证书
    sh make_server_cert.sh rabbitmq-server rabbit

    一个参数是服务器名,第二个参数是密码。

    • 生成客户端证书
    sh create_client_cert.sh rabbit-client rabbit

    第一个参数是客户端名称,第二个参数是密码。

    执行完以上步骤之后,会在ssl目录下生成:ca、server、client三个文件夹。

    配置RabbitMQ Server用到的三个文件如下: 
    配置RabbitMQ SSL只会用到以下3个文件:

    ca/cacert.pem
    server/rabbitmq-server.cert.pem
    server/rabbitmq-server.key.pem

    将这三个文件拷贝到RabbitMQ的建议可以把需要用到的3个文件带目录结构拷贝到  /rabbitmqinaction/rabbitmq/etc/rabbitmq/ssl 目录下(没有ssl文件夹的话可以新建),那么配置文件内容为:目录中。

    配置RabbitMQ开启SSL

    在WEB控制台中可以看到rabbitmq.config的地址,如果没有就新建这个文件

    vi /rabbitmqinaction/rabbitmq/etc/rabbitmq/rabbitmq.config
    
    [
    {rabbit, [{vm_memory_high_watermark_paging_ratio, 0.4},
    {vm_memory_high_watermark, 0.4},
    {tcp_listeners, [5672]},
    {ssl_listeners, [5671]},
    {ssl_options, [{cacertfile,"/rabbitmqinaction/rabbitmq/etc/rabbitmq/ssl/cacert.pem"},
    {certfile,"/rabbitmqinaction/rabbitmq/etc/rabbitmq/ssl/rabbitmq-server.cert.pem"},
    {keyfile,"/rabbitmqinaction/rabbitmq/etc/rabbitmq/ssl/rabbitmq-server.key.pem"},
    {verify, verify_peer},
    {fail_if_no_peer_cert, true}
    ]}
    ]}
    ].

    ssl_listeners 指定SSL监听5671端口。 
    fail_if_no_peer_cert 意思是是否强制验证证书。

      • 重启RabbitMQ
    rabbitmqctl stop
    rabbitmq-server -detached
    • 查看是否开启

     

  • 相关阅读:
    【转】Django部署时为什么要用 uWSGI与 Nginx? 以及 WSGI,uwsgi等协议
    django 的 uwsgi+Nginx 部署配置
    【转】详解Django DRF框架中APIView、GenericAPIView、ViewSet区别
    python导入包 相对路径踩坑
    【转】Jmeter逻辑控制器-事务控制器的使用
    my live / PC keyboard / Thinkpad Mluti Connect Bluttooth Keyboard with Trackpoint / KT-1525 / KU-1255 / 4x30k12182
    my live / PC GPU NVIDIA Quadro P1000 / Intel UHD Graphics 630 / Dell P2418HT / chumoping
    project architecture evolution
    OS + Linux DevOps
    OS + Linux MP3
  • 原文地址:https://www.cnblogs.com/wyt007/p/9086250.html
Copyright © 2011-2022 走看看