現在使用している古いアプリを 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"
ベストアンサー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 への有効なセキュリティ チェーンが存在しないためです。ほとんどのブラウザでは、リクエストを続行するか、サイトを例外として追加して警告が表示されないようにすることができます。