【发布时间】:2021-09-28 15:28:00
【问题描述】:
我在 heroku/git 上托管的 Django 项目有以下 celery 配置 -
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'App.settings')
app = Celery('App')
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_REQUIRED
},
redis_backend_use_ssl = {
'ssl_cert_reqs': ssl.CERT_REQUIRED
}
)
但是,当我运行 celery 时,我收到以下日志错误消息。
ERROR/MainProcess] consumer: Cannot connect to rediss://****************//: Error 1 connecting to *************. [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed
我可以通过设置 ssl_cert_reqs': ssl.CERT_NONE 来解决这个问题,但是我会收到以下警告 -
Setting ssl_cert_reqs=CERT_NONE when connecting to redis means that celery will not valdate the identity of the redis broker when connecting. This leaves you vulnerable to man in the middle attacks.
有谁知道我可以如何解决这个问题,以使用 SSL 和 Celery 来保护我的项目向前发展?
【问题讨论】:
-
通常,为了解决证书问题,我首先尝试使用 openssl 和内部 CA 存储进行连接,以验证它是否具有所需的证书。我从
openssl s_client -connect <host>:<port>开始,如果返回 0(ok),那么就要弄清楚为什么框架中的库没有 CA 证书。如果不返回 0,则需要将证书添加到 CA。 -
您无法在 heroku 上的项目中添加 ssl 证书?
标签: ssl heroku ssl-certificate celery django-celery