rar*_*iru 5 security ssl amqp rabbitmq celery
我正在尝试在我的 Django Web 服务器上安全地配置Celery,我可以找出两种实现此目的的替代方法。保护代理或签署消息。
Celery,需要一个消息代理,在这种情况下是RabbitMQ。
我正在使用“RabbitMQ 即服务”实现,这意味着使用amqp协议通过互联网访问 RabbitMQ 服务器。
服务商分发了一个amqp uri,同时也支持 amqps:
“amqps”URI 方案用于指示客户端与服务器建立安全连接。
为了使用 amqps,celery 需要以下配置:
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
}
Run Code Online (Sandbox Code Playgroud)
问题:
在哪里可以找到这些.pem文件?
根据RabbitMQ docs,我必须自己创建它们并配置 RabbitMQ 服务器以使用它们。
但是,我没有运行服务器。如上所述,我有一个支持 amqps 的“RabbitMQ 即服务”提供者。我应该让他给我提供那些.pem文件吗?
芹菜,也可以签名消息。
(尝试这种方法,我收到了我报告的No encoder installed for auth错误。)
问题:这是否意味着我可以使用我的证书来保护连接作为替代配置BROKER_USE_SSL?
还有一个关于消息签名的说明:
auth 序列化程序不会加密消息的内容,因此如果需要,必须单独启用它。
子问题:加密消息的内容是否可以保护我免受“当前”RabbitMQ 服务器管理员的影响,而“消息签名”仅在连接到该服务器时保护我?
显然我有点困惑,但我不希望出于任何原因在互联网上创建任何类型的不安全流量。我会很感激你的帮助。
配置CloudAMQP 时,您需要将 BROKER_USE_SSL 设置为 True 和 BROKER_URL 如下所示:
BROKER_USE_SSL = True
BROKER_URL = 'amqp://user:pass@hostname:5671/vhost'
注意端口号 5671,并保留“amqp”。