如何为从 Celery 到 Redis 的安全连接生成证书
How to generate certs for secured connection from Celery to Redis
我正在学习 this 教程,并将与 Celery 背景相关的代码调整到我的项目中。
就我而言,我在 Docker 环境中操作,并且我有一个安全站点(即 https://localhost),它需要安全的 ssl 通信。
here 中的文档显示了有关如何提供证书相关文件(密钥文件、证书文件、ca_certs)的示例。
但是我一开始并不清楚如何创建这些文件。
here 中的教程展示了如何创建自定义证书颁发机构以及如何使用它签署证书。
我按照步骤创建了 3 个文件:
- keyfile - dev.mergebot.com.crt - 签名证书(由 myCA.pem 签名)
- ca_certs - dev.mergebot.com.key - 使用 "self-trusted CA"
创建签名证书的私钥
- certfile - myCA.pem - "self-trusted CA" 证书(教程中的文件名:myCA.pem)
请注意,我创建的这 3 个文件完全与 Celery 或 Redis 或 Docker 无关。
它们是在我 Docker 之外的本地机器上创建的。这些文件没有 Redis 容器的名称,证书中的 Common Name 设置为 "foo"
当我在我的 webapp 中使用这些文件时,没有从 Celery 到 Redis 的连接。
没有 ssl 我确实可以连接,所以除了 ssl 之外的整体环境还可以 - 请参阅
创建证书相关文件是否有任何特定要求? (例如,证书中的 Common Name 是否应具有容器名称 "redis",等等...)
有没有办法在没有应用程序的情况下测试证书的有效性,例如通过从容器发出命令 shell?
谢谢
是的,证书的comman name 应该与主机名匹配,而且证书的颁发者应该被客户端信任。
在您的情况下,由于您使用的是自定义 CA 并生成证书,因此 CA 的 public 证书应该位于客户端的受信任根目录中。
此外,证书应该颁发给主机名,在您的情况下它将是 localhost 。请注意,如果您使用 fqdn 或 Up 从远程计算机访问该站点,浏览器会将警报标记为无效。
还要验证证书,您可以使用 OpenSSL
验证选项。
我能够使用 here
中的教程生成证书相关文件(密钥文件、证书文件、ca_certs)
我首先测试了我可以从本地主机连接到 "redis with ssl" docker 容器。
我描述了细节
然后我测试了我可以从 Celery docker 容器连接到 "redis with ssl" docker 容器
我描述了细节
我正在学习 this 教程,并将与 Celery 背景相关的代码调整到我的项目中。
就我而言,我在 Docker 环境中操作,并且我有一个安全站点(即 https://localhost),它需要安全的 ssl 通信。
here 中的文档显示了有关如何提供证书相关文件(密钥文件、证书文件、ca_certs)的示例。
但是我一开始并不清楚如何创建这些文件。
here 中的教程展示了如何创建自定义证书颁发机构以及如何使用它签署证书。
我按照步骤创建了 3 个文件:
- keyfile - dev.mergebot.com.crt - 签名证书(由 myCA.pem 签名)
- ca_certs - dev.mergebot.com.key - 使用 "self-trusted CA" 创建签名证书的私钥
- certfile - myCA.pem - "self-trusted CA" 证书(教程中的文件名:myCA.pem)
请注意,我创建的这 3 个文件完全与 Celery 或 Redis 或 Docker 无关。 它们是在我 Docker 之外的本地机器上创建的。这些文件没有 Redis 容器的名称,证书中的 Common Name 设置为 "foo"
当我在我的 webapp 中使用这些文件时,没有从 Celery 到 Redis 的连接。
没有 ssl 我确实可以连接,所以除了 ssl 之外的整体环境还可以 - 请参阅
创建证书相关文件是否有任何特定要求? (例如,证书中的 Common Name 是否应具有容器名称 "redis",等等...)
有没有办法在没有应用程序的情况下测试证书的有效性,例如通过从容器发出命令 shell?
谢谢
是的,证书的comman name 应该与主机名匹配,而且证书的颁发者应该被客户端信任。
在您的情况下,由于您使用的是自定义 CA 并生成证书,因此 CA 的 public 证书应该位于客户端的受信任根目录中。
此外,证书应该颁发给主机名,在您的情况下它将是 localhost 。请注意,如果您使用 fqdn 或 Up 从远程计算机访问该站点,浏览器会将警报标记为无效。
还要验证证书,您可以使用 OpenSSL
验证选项。
我能够使用 here
中的教程生成证书相关文件(密钥文件、证书文件、ca_certs)我首先测试了我可以从本地主机连接到 "redis with ssl" docker 容器。
我描述了细节
然后我测试了我可以从 Celery docker 容器连接到 "redis with ssl" docker 容器
我描述了细节