Celery - RabbitMQ 即服务 - 代理安全连接 (TSL/SSL) - 消息签名
Celery - RabbitMQ as a Service - Broker Secure Connection (TSL/SSL) - Message Signing
我正在尝试在我的 Django 网络服务器上安全地配置 Celery,我可以想出两种方法来实现这一点。保护代理或签署消息。
Celery,需要一个消息代理,在这种情况下是 RabbitMQ。
我正在使用 "RabbitMQ as a service" 实现,这意味着使用 amqp 协议通过互联网访问 RabbitMQ 服务器。
服务商分发一个amqp uri,也支持amqps:
The "amqps" URI scheme is used to instruct a client to make an secured connection to the server.
- Apparently,这就是我所需要的,否则我所有的消息都会在网上流传,裸露在电线上。
为了使用 amqps,celery 需要以下 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 服务器才能使用它们。
不过,我不是运行服务器。如上所述,我有一个支持 amqps 的 "RabbitMQ as a service" 供应商。我应该让他给我提供那些 .pem
文件吗?
芹菜,也可以sign messages。
(尝试这种方法,我得到一个 No encoder installed for auth
错误 I reported。)
问题: 这是否意味着我可以使用我的证书来保护连接作为 BROKER_USE_SSL
的替代配置?
还有一条关于消息签名的说明:
auth serializer won’t encrypt the contents of a message, so if needed
this will have to be enabled separately.
子问题: 加密消息内容是否可以保护我免受 "current" RabbitMQ 服务器管理员的侵害,而 "message signing" 仅在连接到网络时保护我那个服务器?
显然我有点困惑,但我不想出于任何原因在 Internet 上创建任何类型的不安全流量。非常感谢您的帮助。
配置CloudAMQP时,需要将BROKER_USE_SSL设为True,BROKER_URL如下所示:
BROKER_USE_SSL = True
BROKER_URL = 'amqp://user:pass@hostname:5671/vhost'
记下端口号5671,并保持'amqp'.
如果您是 运行 自己的 Rabbit 设置,请检查此设置以确保其安全。
我正在尝试在我的 Django 网络服务器上安全地配置 Celery,我可以想出两种方法来实现这一点。保护代理或签署消息。
Celery,需要一个消息代理,在这种情况下是 RabbitMQ。
我正在使用 "RabbitMQ as a service" 实现,这意味着使用 amqp 协议通过互联网访问 RabbitMQ 服务器。
服务商分发一个amqp uri,也支持amqps:
The "amqps" URI scheme is used to instruct a client to make an secured connection to the server.
- Apparently,这就是我所需要的,否则我所有的消息都会在网上流传,裸露在电线上。
为了使用 amqps,celery 需要以下 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 服务器才能使用它们。
不过,我不是运行服务器。如上所述,我有一个支持 amqps 的 "RabbitMQ as a service" 供应商。我应该让他给我提供那些
.pem
文件吗?芹菜,也可以sign messages。
(尝试这种方法,我得到一个
No encoder installed for auth
错误 I reported。)问题: 这是否意味着我可以使用我的证书来保护连接作为
BROKER_USE_SSL
的替代配置?还有一条关于消息签名的说明:
auth serializer won’t encrypt the contents of a message, so if needed this will have to be enabled separately.
子问题: 加密消息内容是否可以保护我免受 "current" RabbitMQ 服务器管理员的侵害,而 "message signing" 仅在连接到网络时保护我那个服务器?
显然我有点困惑,但我不想出于任何原因在 Internet 上创建任何类型的不安全流量。非常感谢您的帮助。
配置CloudAMQP时,需要将BROKER_USE_SSL设为True,BROKER_URL如下所示:
BROKER_USE_SSL = True
BROKER_URL = 'amqp://user:pass@hostname:5671/vhost'
记下端口号5671,并保持'amqp'.
如果您是 运行 自己的 Rabbit 设置,请检查此设置以确保其安全。