ローカル開発用にDockerでApache SSLを有効にする 質問する

ローカル開発用にDockerでApache SSLを有効にする 質問する

現在使用している古いアプリを Docker 化しています。いくつかのサービスを使用していますが、問題が発生するのは PHP、Apache、特に Apache の https です。「php:5.6.30-apache」イメージを使用しているため、PHP と Apache はプリインストールされています。

ここで、「000-default.conf」を次の内容に変更しました。

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/app/htdocsAdmin
    ServerName admin.local.app.io
    CustomLog /var/log/apache2/app.admin.access.log "trueip_combined"
    ErrorLog /var/log/apache2/app.admin.error.log
    <Directory /var/www/html/app/htdocsAdmin>
        AllowOverride Options FileInfo AuthConfig
        Require all granted
    </Directory>
</VirtualHost>

これは私の Docker ファイルです:

FROM php:5.6.30-apache

MAINTAINER Tzook Bar Noy

ADD default /etc/apache2/sites-available/000-default.conf


RUN apt-get update \
  && apt-get install -y apt-utils \
  && apt-get install -y php5-dev php5-memcached \
  && apt-get install -y memcached



RUN apt-get update && apt-get install -y apt-utils
RUN apt-get install -y libz-dev libmemcached-dev
RUN pecl install memcached-2.2.0
RUN echo extension=memcached.so >> /usr/local/etc/php/conf.d/memcached.ini

RUN a2enmod rewrite
RUN a2enmod ssl


EXPOSE 80
EXPOSE 443

memcached のことは気にしないでください。"ssl" を有効にしてポート 80,443 を公開するだけです。

これは docker-compose で実行されています:

php:
build:
  context: ./php
  dockerfile: Dockerfile
ports:
  - "80:80"
  - "443:443"
volumes:
  - ./../../:/var/www/html
networks:
  - appnet
tty: true

しかし、その後も Chrome から次のメッセージが表示されます:

"ERR_SSL_PROTOCOL_ERROR"

コメントでリクエストされたとおり、私の「docker ps」応答は次のとおりです。ここに画像の説明を入力してください

ベストアンサー1

SSL を有効にしてポート 443 を公開するだけでなく、(自己署名) 証明書 + 秘密キーを作成し、Apache がそれらにアクセスできることを確認する必要があります。

自己署名証明書を作成するには、openSSL を使用することをお勧めします。

openssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 -subj \
    "/C=../ST=...../L=..../O=..../CN=..." \
    -keyout ./ssl.key -out ./ssl.crt

ドット (...) の代わりに、2 文字の国コード (/C)、州または県の名前 (/ST)、地域名 (/L)、組織名 (/O)、およびサーバーの FQDN (/CN) を入力します。

次に、docker ファイルに次の行を追加します。

COPY ./path/to/ssl.crt /etc/apache2/ssl/ssl.crt
COPY ./path/to/ssl.key /etc/apache2/ssl/ssl.key
RUN mkdir -p /var/run/apache2/

最後の行が本当に必要かどうかはわかりませんが、私の Docker コンテナではフォルダーがまだ存在していなかったため、Apache の起動が失敗しました。

最後に、000-default.conf ファイルに次のような内容を追加する必要があります。

<VirtualHost *:443>
  SSLEngine on
  SSLCertificateFile /etc/apache2/ssl/ssl.crt
  SSLCertificateKeyFile /etc/apache2/ssl/ssl.key
  ....
</VirtualHost>

自己署名証明書を使用する場合、ほとんどのブラウザは「接続が安全ではありません」(Firefox) または「証明書が無効です」(Chrome) という警告を表示します。これは、信頼できる CA への有効なセキュリティ チェーンが存在しないためです。ほとんどのブラウザでは、リクエストを続行するか、サイトを例外として追加して警告が表示されないようにすることができます。

おすすめ記事