我正在尝试安全地在我的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
文件吗?
- 芹菜,也可以sign messages .
(尝试这种方法,我得到一个 No encoder installed for auth
错误I reported . )
Question: 这是否意味着我可以使用我的证书来保护连接作为 BROKER_USE_SSL
的替代配置?
还有一条关于邮件签名的说明:
auth serializer不会加密消息的内容,因此如果需要,必须单独启用 .
Subquestion: 加密消息的内容是否保护我免受"current" RabbitMQ服务器管理员的影响,而"message signing"只保护我在通往该服务器的线路上?
显然我有些困惑,但我不想因任何原因在互联网上创造任何不安全的流量 . 我很感激你的帮助 .
2 回答
配置CloudAMQP时,需要将BROKER_USE_SSL设置为True,并将BROKER_URL设置为如下所示:
BROKER_USE_SSL = True
BROKER_URL = 'amqp://user:pass@hostname:5671/vhost'
注意端口号5671,并保持'amqp' .
如果您正在运行自己的Rabbit安装检查,请确保其安全 .
https://www.rabbitmq.com/ssl.html