【问题标题】:How to generate certs for secured connection from Celery to Redis如何为从 Celery 到 Redis 的安全连接生成证书
【发布时间】:2020-05-31 10:36:19
【问题描述】:

我正在关注this 教程,并将 Celery-background 相关代码调整到我的项目中。

在我的情况下,我在 Docker 环境中运行,并且我有一个需要安全 ssl 通信的安全站点(即https://localhost)。

here 中的文档显示了如何提供证书相关文件(keyfile、certfile、ca_certs)的示例。
但我不清楚如何首先创建这些文件。

here 中的教程展示了如何创建自定义证书颁发机构,以及如何使用它签署证书。
我按照步骤创建了 3 个文件:

  • keyfile - dev.mergebot.com.crt - 签名证书(由 myCA.pem 签名)
  • ca_certs - dev.mergebot.com.key - 使用“自信任 CA”创建签名证书的私钥
  • certfile - myCA.pem - “自信任 CA” 证书(教程中的文件名:myCA.pem)

请注意,我创建的这 3 个文件完全与 Celery、Redis 或 Docker 无关。 它们是在我在 Docker 之外的本地机器上创建的。这些文件没有 Redis 容器的名称,并且证书中的 Common Name 设置为“foo”

当我在我的 web 应用程序中使用这些文件时,没有从 Celery 到 Redis 的连接。
如果没有 ssl,我确实可以建立连接,因此除了 ssl 之外的整体环境还可以 - 请参阅 here

创建证书相关文件有什么具体要求吗? (例如,证书中的通用名称是否应该具有容器名称“redis”等...)

有没有办法在没有应用程序的情况下测试证书的有效性,例如通过从容器外壳发出命令?

谢谢

【问题讨论】:

    标签: docker flask redis celery


    【解决方案1】:

    我能够使用here 中的教程生成证书相关文件(keyfile、certfile、ca_certs)

    我首先测试了我可以从本地主机连接到“带 ssl 的 redis”docker 容器。 我描述了细节here

    然后我测试了我可以从 Celery docker 容器连接到“redis with ssl”docker 容器 我描述了细节here

    【讨论】:

      【解决方案2】:

      是的,证书的命令行名称应该与主机名匹配,证书的颁发者也应该受到客户端的信任。

      在您的情况下,由于您使用的是自定义 CA 并生成证书,因此 CA 的公共证书应该位于客户端的受信任根目录中。

      此外,证书应该颁发给主机名,在您的情况下,它将是 localhost 。请注意,如果您使用 fqdn 或 Up 从远程计算机访问该站点,浏览器会将警报标记为无效。

      还要验证证书,您可以使用OpenSSL 验证选项。

      【讨论】:

        猜你喜欢
        • 2021-03-15
        • 2020-05-29
        • 2014-04-07
        • 1970-01-01
        • 2022-01-11
        • 1970-01-01
        • 2017-12-18
        • 2014-04-04
        • 1970-01-01
        相关资源
        最近更新 更多