HTTPS 経由の Docker Compose を使用した ASP.NET Core イメージのホストHosting ASP.NET Core images with Docker Compose over HTTPS

既定では、ASP.NET Core で HTTPS が使用されます。ASP.NET Core uses HTTPS by default. HTTPS は、信頼、id、および暗号化のための 証明書 に依存します。HTTPS relies on certificates for trust, identity, and encryption.

このドキュメントでは、HTTPS で事前に構築されたコンテナーイメージを実行する方法について説明します。This document explains how to run pre-built container images with HTTPS.

開発シナリオについては、「 HTTPS 経由の Docker を使用した ASP.NET Core アプリケーションの開発 」を参照してください。See Developing ASP.NET Core Applications with Docker over HTTPS for development scenarios.

このサンプルでは、docker 17.06 以降の docker クライアントが必要です。This sample requires Docker 17.06 or later of the Docker client.

[前提条件]Prerequisites

このドキュメントの一部の手順では、 .Net Core 2.2 SDK 以降が必要です。The .NET Core 2.2 SDK or later is required for some of the instructions in this document.

証明書Certificates

ドメインの運用ホストには、証明機関からの証明書が必要です。A certificate from a certificate authority is required for production hosting for a domain. Let's Encrypt は、無料の証明書を提供する証明機関です。Let's Encrypt is a certificate authority that offers free certificates.

このドキュメントでは、事前に構築されたイメージをホストするために 自己署名の開発証明書 を使用 localhost します。This document uses self-signed development certificates for hosting pre-built images over localhost. 手順は、実稼働証明書の使用に似ています。The instructions are similar to using production certificates.

実稼働証明書の場合:For production certificates:

  • dotnet dev-certsツールは必要ありません。The dotnet dev-certs tool is not required.
  • 手順で使用した場所に証明書を保存する必要はありません。Certificates don't need to be stored in the location used in the instructions. サイトディレクトリの外部にある任意の場所に証明書を格納します。Store the certificates in any location outside the site directory.

次のセクションに記載されている手順では、 volumes docker-compose.ymlのプロパティを使用して、証明書をコンテナーにマウントします。The instructions contained in the following section volume mount certificates into containers using the volumes property in docker-compose.yml. Dockerfile でコマンドを使用してコンテナーイメージに証明書を追加することもでき COPY ますが、この方法はお勧めしません。 DockerfileYou could add certificates into container images with a COPY command in a Dockerfile, but it's not recommended. 証明書をイメージにコピーすることは、次の理由から推奨されません。Copying certificates into an image isn't recommended for the following reasons:

  • これにより、開発者証明書でのテストに同じイメージを使用することが難しくなります。It makes it difficult to use the same image for testing with developer certificates.
  • これにより、運用証明書でのホストに同じイメージを使用することが難しくなります。It makes it difficult to use the same image for Hosting with production certificates.
  • 証明書の公開には大きなリスクがあります。There is significant risk of certificate disclosure.

Docker 構成を使用して https をサポートするコンテナーを開始するStarting a container with https support using docker compose

オペレーティングシステムの構成については、次の手順に従います。Use the following instructions for your operating system configuration.

Linux コンテナーを使用した WindowsWindows using Linux containers

証明書を生成してローカルコンピューターを構成する:Generate certificate and configure local machine:

dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p { password here }
dotnet dev-certs https --trust

上記のコマンドで、を { password here } パスワードに置き換えます。In the preceding commands, replace { password here } with a password.

次の内容を含む docker-compose.yml ファイルを作成します。Create a docker-compose.debug.yml file with the following content:

version: '3.4'

services:
  webapp:
    image: mcr.microsoft.com/dotnet/core/samples:aspnetapp
    ports:
      - 80
      - 443
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
      - ASPNETCORE_Kestrel__Certificates__Default__Password=password
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
    volumes:
      - ~/.aspnet/https:/https:ro

Docker 構成ファイルで指定されたパスワードは、証明書に使用されるパスワードと一致する必要があります。The password specified in the docker compose file must match the password used for the certificate.

HTTPS 用に構成された ASP.NET Core でコンテナーを起動します。Start the container with ASP.NET Core configured for HTTPS:

docker-compose -f "docker-compose.debug.yml" up -d

macOS または LinuxmacOS or Linux

証明書を生成してローカルコンピューターを構成する:Generate certificate and configure local machine:

dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p { password here }
dotnet dev-certs https --trust

dotnet dev-certs https --trust は、macOS と Windows でのみサポートされています。dotnet dev-certs https --trust is only supported on macOS and Windows. ディストリビューションでサポートされている方法で Linux 上の証明書を信頼する必要があります。You need to trust certificates on Linux in the way that is supported by your distribution. ブラウザーで証明書を信頼する必要があると考えられます。It is likely that you need to trust the certificate in your browser.

上記のコマンドで、を { password here } パスワードに置き換えます。In the preceding commands, replace { password here } with a password.

次の内容を含む docker-compose.yml ファイルを作成します。Create a docker-compose.debug.yml file with the following content:

version: '3.4'

services:
  webapp:
    image: mcr.microsoft.com/dotnet/core/samples:aspnetapp
    ports:
      - 80
      - 443
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
      - ASPNETCORE_Kestrel__Certificates__Default__Password=password
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
    volumes:
      - ~/.aspnet/https:/https:ro

Docker 構成ファイルで指定されたパスワードは、証明書に使用されるパスワードと一致する必要があります。The password specified in the docker compose file must match the password used for the certificate.

HTTPS 用に構成された ASP.NET Core でコンテナーを起動します。Start the container with ASP.NET Core configured for HTTPS:

docker-compose -f "docker-compose.debug.yml" up -d

Windows コンテナーを使用した windowsWindows using Windows containers

証明書を生成してローカルコンピューターを構成する:Generate certificate and configure local machine:

dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p { password here }
dotnet dev-certs https --trust

上記のコマンドで、を { password here } パスワードに置き換えます。In the preceding commands, replace { password here } with a password.

次の内容を含む docker-compose.yml ファイルを作成します。Create a docker-compose.debug.yml file with the following content:

version: '3.4'

services:
  webapp:
    image: mcr.microsoft.com/dotnet/core/samples:aspnetapp
    ports:
      - 80
      - 443
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
      - ASPNETCORE_Kestrel__Certificates__Default__Password=password
      - ASPNETCORE_Kestrel__Certificates__Default__Path=C:\https\aspnetapp.pfx
    volumes:
      - ${USERPROFILE}\.aspnet\https:C:\https:ro

Docker 構成ファイルで指定されたパスワードは、証明書に使用されるパスワードと一致する必要があります。The password specified in the docker compose file must match the password used for the certificate.

HTTPS 用に構成された ASP.NET Core でコンテナーを起動します。Start the container with ASP.NET Core configured for HTTPS:

docker-compose -f "docker-compose.debug.yml" up -d