首页 文章

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

提问于
浏览
1

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

  • 芹菜需要一个消息代理,在这种情况下是RabbitMQ .

我正在使用"RabbitMQ as a service"实现,这意味着使用amqp协议通过Internet访问RabbitMQ服务器 .

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

“amqps”URI方案用于指示客户端与服务器 Build 安全连接 .

  • 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
}

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

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

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

(尝试这种方法,我得到一个 No encoder installed for auth 错误I reported . )

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

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

auth serializer不会加密消息的内容,因此如果需要,必须单独启用 .

Subquestion: 加密消息的内容是否保护我免受"current" RabbitMQ服务器管理员的影响,而"message signing"只保护我在通往该服务器的线路上?

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

2 回答

  • 2

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

    BROKER_USE_SSL = True

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

    注意端口号5671,并保持'amqp' .

  • 4

    如果您正在运行自己的Rabbit安装检查,请确保其安全 .

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

相关问题