Как сгенерировать сертификаты для безопасного соединения из сельдерея в Redis - PullRequest
0 голосов
/ 16 февраля 2020

Я следую этому учебнику и настраиваю связанный с фоном Celery код для моего проекта.

В моем случае я работаю в среде Docker и имею защищенный сайт (т. е. https://localhost), для которого требуется защищенная связь ssl.

Документация в здесь показывает пример того, как предоставить файлы, связанные с сертификатом (файл ключа, certfile, ca_certs).
Но мне непонятно, как создать эти файлы.

В руководстве по здесь показано, как создать пользовательский центр сертификации и как подписать сертификат с ним.
Я выполнил шаги и создал 3 файла:

  • keyfile - dev.mergebot.com.crt - подписанный сертификат (подписанный myCA.pem)
  • ca_certs - dev.mergebot.com.key - закрытый ключ для создания подписанного сертификата с «доверенным СА»
  • certfile - myCA.pem - сертификат «доверенного СА» (имя файла в руководстве: myCA.pem)

Обратите внимание, что я создал эти 3 файла полностью , не связанных с Celery или Redis или Docker. Они были созданы на моей локальной машине за пределами Docker. Файлы не имеют имени контейнера Redis, а Common Name в сертификате было установлено как "foo"

Когда я использую эти файлы в моем веб-приложении, соединение отсутствует от Celery до Redis.
Без ssl я получаю соединение, поэтому общая среда, кроме ssl, в порядке - см. здесь

Есть ли какие-либо спецификации c требования для создания файлов, связанных с сертификатом? (Например, если общее имя в сертификате имеет имя контейнера "redis", et c ...)

Есть ли способ проверить действительность сертификатов без приложение, например, введя команду из оболочки контейнера?

Спасибо

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Я смог сгенерировать файлы, связанные с сертификатом (keyfile, certfile, ca_certs), используя учебное пособие в здесь

Сначала я проверил, что могу подключиться с моего локального хоста к «redis» с контейнером ssl "docker. и я описал детали здесь

Затем я проверил, что могу подключиться из контейнера Celery docker к контейнеру "redis with ssl" docker, и я описал детали здесь

0 голосов
/ 16 февраля 2020

Да, имя коммандера сертификата должно совпадать с именем хоста, а клиенту следует доверять издателю сертификата.

В вашем случае, поскольку вы используете пользовательский CA и генерируете сертификаты, publi c сертификат CA должен быть в доверенном root клиента.

Кроме того, сертификат должен быть выдан имени хоста, в вашем случае это будет localhost. Обратите внимание, что если вы заходите на сайт с удаленного компьютера с помощью fqdn или Up, браузер пометит предупреждение как недействительное.

Также для проверки сертификатов вы можете использовать OpenSSL Verify вариант.

...