我正在尝试安全地在我的Django Web服务器上配置Celery,我可以找到两个替代方案来实现这一点。保护代理或签署消息。
Celery需要一个消息代理,在这种情况下RabbitMQ。
我正在使用" RabbitMQ作为服务"实现,这意味着使用amqp协议通过互联网访问RabbitMQ服务器。
服务提供商分发amqp uri,并且还支持amqps:
" amqps" URI方案用于指示客户端与服务器建立安全连接。
为了使用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服务器管理员在"消息签名"只能在通往该服务器的电线上保护我?
显然我有些困惑,但我不想因任何原因在互联网上创造任何不安全的流量。我很感激你的帮助。
答案 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设置,请将其设置为安全。