首页 > 解决方案 > Celery/Redis 配置中的 SSL 认证 - keyfile、certfile 和 ca_certs

问题描述

我的 celery.py 目前设置如下 -

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')

app = Celery('project')

app.conf.timezone = 'Europe/London'

app.config_from_object('django.conf:settings')

app.conf.update(BROKER_URL=str(os.getenv('REDIS_URL')),
                CELERY_RESULT_BACKEND=str(os.getenv('REDIS_URL')),
                broker_use_ssl = {
                        'ssl_cert_reqs': ssl.CERT_NONE
                    },
                    redis_backend_use_ssl = {
                        'ssl_cert_reqs': ssl.CERT_NONE
                    })
                
app.autodiscover_tasks()

但是,当启动 celery 时,我收到此警告消息“连接到 redis 时设置 ssl_cert_reqs=CERT_NONE 意味着 celery 在连接时不会验证 redis 代理的身份。这使您容易受到中间人的攻击。”

我想添加我的 SSL 证书,但不完全确定如何添加或从何处获取信息。我知道 celery 配置的设置应该是这样的 -

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')

app = Celery('project')

app.conf.timezone = 'Europe/London'

app.config_from_object('django.conf:settings')

app.conf.update(BROKER_URL=str(os.getenv('REDIS_URL')),
                CELERY_RESULT_BACKEND=str(os.getenv('REDIS_URL')),
                broker_use_ssl = {
                        'keyfile': ????,
                        'certfile': ????,
                        'ca_certs': ????,
                        'ssl_cert_reqs': ssl.CERT_REQUIRED
                    },
                    redis_backend_use_ssl = {
                       'keyfile': ????,
                       'certfile': ????,
                       'ca_certs': ????,
                       'ssl_cert_reqs': ssl.CERT_REQUIRED
                    })
                
app.autodiscover_tasks()

但我不确定从哪里获取密钥文件、证书文件和 ca_certs 的凭据。我正在使用 Heorku 来托管我的 SSL 证书的创建位置。

标签: sslredisssl-certificatecelerydjango-celery

解决方案


推荐阅读