Celery - RabbitMQ即服务 - 代理安全连接(TSL / SSL) - 消息签名

时间:2016-09-14 06:59:31

标签: security ssl rabbitmq celery amqp

我正在尝试安全地在我的Django Web服务器上配置Celery,我可以找到两个替代方案来实现这一点。保护代理或签署消息。

  • Celery需要一个消息代理,在这种情况下RabbitMQ

    我正在使用" RabbitMQ作为服务"实现,这意味着使用amqp协议通过互联网访问RabbitMQ服务器。

    服务提供商分发amqp uri,并且还支持amqps:

      

    " amqps" URI方案用于指示客户端与服务器建立安全连接。

    • Apparently,这就是我所需要的,否则我的所有信息都会在网上流传,裸露在网上。

    为了使用amqps,芹菜需要以下configuration

    import ssl
    
    BROKER_USE_SSL = {
      'keyfile': '/var/ssl/private/worker-key.pem',
      'certfile': '/var/ssl/amqp-server-cert.pem',
      'ca_certs': '/var/ssl/myca.pem',
      'cert_reqs': ssl.CERT_REQUIRED
    }
    

    问题: 我在哪里可以找到那些.pem个文件?

    根据RabbitMQ docs,我必须自己创建它们并配置RabbitMQ服务器以使用它们。

    但是,我没有运行服务器。如上所述,我有一个" RabbitMQ即服务"支持amqps的提供者。我应该让他向我提供.pem个文件吗?

  • 芹菜,也可以sign messages

    (尝试这种方法,我收到No encoder installed for auth I reported的错误。)

    问题:这是否意味着我可以使用我的证书来保护连接,作为BROKER_USE_SSL的替代配置?

    还有关于邮件签名的说明:

      

    auth序列化程序不会加密消息的内容,因此如果需要的话   这必须单独启用。

    子请求:加密邮件内容是否可以保护我免受"当前" RabbitMQ服务器管理员在"消息签名"只能在通往该服务器的电线上保护我?

显然我有些困惑,但我不想因任何原因在互联网上创造任何不安全的流量。我很感激你的帮助。

2 个答案:

答案 0 :(得分:4)

配置CloudAMQP时,需要将BROKER_USE_SSL设置为True,并将BROKER_URL设置为如下所示:

BROKER_USE_SSL = True

BROKER_URL = 'amqp://user:pass@hostname:5671/vhost'

请注意端口号5671,并保留'amqp'。

答案 1 :(得分:2)

如果您正在运行自己的Rabbit设置,请将其设置为安全。

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