Назад | Перейти на главную страницу

Позволяет зашифровать SSL-сертификат в контейнере Docker через nginx-proxy

в настоящее время я использую nginx-proxy для маршрутизации своих поддоменов в разные контейнеры докеров. Теперь я хотел бы добавить сертификат SSL в свой контейнер Owncloud, но я не могу его правильно настроить.

Что я наделал:

  1. Получение сертификата через certbot

Я попытался получить сертификат SAN, выполнив ./certbot-auto certonly где я ввел каждый субдомен, который хотел бы использовать. Сертификат успешно сгенерирован в etc/letsencrypt/live/www.mydomain.com

  1. Монтирование сертификата в контейнер owncloud и настройка nginx-proxy

Взгляните на мой docker-compose.yml:

nginx-proxy:
  image: jwilder/nginx-proxy
  ports:
  - "80:80"
  - "443:443"
  volumes:
  - /var/run/docker.sock:/tmp/docker.sock

owncloud:
  image: owncloud
  expose:
  - 80
  - 443
  environment:
  - "VIRTUAL_HOST=owncloud.mydomain.com,www.owncloud.mydomain.com"
  - "VIRTUAL_PROTO=https"
  - "VIRTUAL_PORT=443"
  volumes:
  - "owncloud-data:/var/www/html"
  - "/etc/letsencrypt/live/www.mydomain.com:/root/ssl"

А вот отрывок из моей /etc/apache2/sites-available/default-ssl.conf (конечно из контейнера owncloud)

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
            ServerAdmin webmaster@localhost

            DocumentRoot /var/www/html

            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined

            SSLEngine on

            SSLCertificateFile      /root/ssl/cert.pem
            SSLCertificateKeyFile /root/ssl/privkey.pem
            <FilesMatch "\.(cgi|shtml|phtml|php)$">
                            SSLOptions +StdEnvVars
            </FilesMatch>
            <Directory /usr/lib/cgi-bin>
                            SSLOptions +StdEnvVars
            </Directory>

            BrowserMatch "MSIE [2-6]" \
                            nokeepalive ssl-unclean-shutdown \
                            downgrade-1.0 force-response-1.0
            # MSIE 7 and newer should be able to use keepalive
            BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

    </VirtualHost>
</IfModule>

Всякий раз, когда я пытаюсь подключиться к https://www.owncloud.mydomain.com Я получаю ERR_CONNECTION_REFUSED ошибка.

Любые идеи? Спасибо.

Наконец, я обнаружил, что мой docker-compose.yaml неверен. Вот моя новая конфигурация:

nginx-proxy:
  image: jwilder/nginx-proxy
  ports:
  - "80:80"
  - "443:443"
  volumes:
  - /var/local/nginx/certs:/etc/nginx/certs
  - /etc/letsencrypt:/etc/letsencrypt
  - /var/run/docker.sock:/tmp/docker.sock

owncloud:
  image: owncloud
  expose:
  - 443
  environment:
  - "VIRTUAL_HOST=owncloud.mydomain.com,www.owncloud.mydomain.com"
  volumes:
  - "owncloud-data:/var/www/html"

Ссылка на мои fullchain.pem и privkey.pem находится в / var / local / nginx