web-dev-qa-db-ja.com

nginx-proxyを介してDockerコンテナのSSL証明書を暗号化しましょう

現在、nginx-proxyを使用して、サブドメインを別のDockerコンテナーにルーティングしています。ここで、SSL証明書をOwncloudコンテナに追加したいのですが、正しく設定できません。

私がしたこと:

  1. certbotを介して証明書を取得する

使用したいすべてのサブドメインを入力した./certbot-auto certonlyを実行して、SAN証明書を取得しようとしました。証明書は、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エラーが発生します。

何か案は?ありがとうございました。

2
caiuspb

最後に、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内にあります

2
caiuspb