Добавление SSL-сертификата

Я купил SSL-сертификат и следовал инструкциям по адресу:

Разрешить SSL / HTTPS для вашей установки Discourse Docker - Документация / Самостоятельное хостинг - Discourse Meta
Включая размещение файлов ssl.key и ssl.crt в /var/discourse/shared/standalone/ssl/ и добавление дополнительных шаблонов в app.yml.

Сайт работал идеально, но после включения SSL он перестал отвечать и выдаёт ошибку «Не удалось подключиться» или «Сервер не найден».

2024/06/13 09:25:08 [emerg] 5152#5152: не удалось загрузить сертификат "/shared/ssl/communities-dev.np.norton.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no>
2024/06/13 09:25:09 [warn] 5182#5182: директива "listen ... http2" устарела, используйте директиву "http2" вместо неё в /etc/nginx/conf.d/discourse.conf:60

Вот мой файл app.yml

##
## После внесения изменений в этот файл вы ОБЯЗАНЫ выполнить пересборку
## /var/discourse/launcher rebuild app
##
## БУДЬТЕ ОЧЕНЬ ОСТОРОЖНЫ ПРИ РЕДАКТИРОВАНИИ!
## YAML-ФАЙЛЫ ЧРЕЗВЫЧАЙНО ЧУВСТВИТЕЛЬНЫ К ОШИБКАМ В ПРОБЕЛАХ И ВЫРАВНИВАНИИ!
## посетите http://www.yamllint.com/, чтобы при необходимости проверить этот файл

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Раскомментируйте следующую строку, чтобы включить прослушивание IPv6
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Раскомментируйте эти две строки, если хотите добавить Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## какие TCP/IP-порты должен открывать этот контейнер?
## Если вы хотите, чтобы Discourse использовал порт совместно с другим веб-сервером, например Apache или nginx,
## см. https://meta.discourse.org/t/17247 для деталей
expose:
  - "80:80"   # http
  - "2222:22"
  - "443:443" # https
  
  
   ## Адрес http или https CDN для этого экземпляра Discourse (настроен на получение)
  ## см. https://meta.discourse.org/t/14857 для деталей
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  ## ID аккаунта и лицензионный ключ Maxmind для геопоиска по IP-адресам
  ## см. https://meta.discourse.org/t/-/173941 для деталей
  #DISCOURSE_MAXMIND_ACCOUNT_ID: 123456
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
  DISCOURSE_USE_SSL: true
  DISCOURSE_SSL_CERTIFICATE_PATH: /var/discourse/shared/standalone/ssl/domain-name.cer
  DISCOURSE_SSL_KEY_PATH: /var/discourse/shared/standalone/ssl/domain-name.key
  DISCOURSE_SSL_CA_PATH: /var/discourse/shared/standalone/ssl/intermediate.cer

## Контейнер Docker не хранит состояние; все данные сохраняются в /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

Пожалуйста, кто-нибудь помогите.

Не следует включать этот шаблон, если вы не используете Let’s Encrypt.
Путь к сертификату будет изменён.

Есть ли конкретная причина, по которой вы не хотите использовать сертификат Let’s Encrypt по умолчанию? Так гораздо проще.

Моя команда предоставила мне SSL-сертификат от DigiCert, и я добавил этот сертификат, закрытый ключ и промежуточный сертификат в следующую локацию: /var/discourse/shared/standalone/ssl. Также я внес некоторые изменения в файл app.yml, которые я опубликовал в сообщении. Похоже, я упускаю множество важных моментов. Не могли бы вы пояснить, что я делаю не так? Я открыт для любых предложений по решению проблемы.

Зачем?

Вы находитесь за брандмауэром? Если нет, то стандартная установка автоматически получит бесплатный сертификат и всё заработает.