2017-05-03 13 views
1

私は現在の古いアプリをドッキングしています。私たちはいくつかのサービスを使用していますが、私が問題を抱えているのはphp、apache、特にapacheのhttpsです。私は "php:5.6.30-apache"イメージを使用していますので、PHPとApacheがプリインストールされています。DockerでApache SSLを有効にしてローカル開発

は今、私はこのコンテンツで "000-は、default.conf" に変更:ちょうど見、memcachedのものを気にしないでください

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 

<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> 

は、これは私のドッキングウィンドウのファイルです私は "ssl"を有効にしてポートを公開します。

これは、ドッカーの構成で実行されています:

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

が、そのすべての後に3210、私はまだクロムからこれを取得:SSLを有効にし、ポート443をさらすだけでなく enter image description here

+0

2つのこと:ドッカーファイルで同じコマンドを2回繰り返す。あなたが使用した 'docker run'コマンドを表示する必要があります。 –

+0

@BurhanKhalid whichコマンド?私はドッカーの作成でこれを実行し、上の関連する部分を貼り付けただけです。 –

+0

'' docker ps'の出力とあなたのApacheコンテナーのログファイルは '' docker-compose up -d'を実行した後ですか? –

答えて

1

:コメントで私の "ドッキングウィンドウのPS" レスポンスを要求したよう

"ERR_SSL_PROTOCOL_ERROR" 

(自己署名)証明書+秘密鍵を作成し、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)

その後、あなたのドッキングウィンドウのファイルに次の行を追加します

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/ 

I'm not sur最後の行は本当に必要ですが、私のドッカーコンテナにはフォルダが存在せず、起動時にApacheが失敗することになります。

あなたはこのような何かを追加する必要があり、あなたの000-は、default.confファイルに最後に

:あなたは、自己署名証明書を使用する場合、ほとんどのブラウザは、「あなたの接続が確保されていません」という警告が表示されますことを

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

は注意(Firefox)または「無効な証明書」(Chrome)をクリックします。これは、信頼できるCAへの有効なセキュリティチェーンがないためです。ほとんどのブラウザでは、警告を表示しないようにリクエストを続行するか、サイトを例外として追加することができます。

関連する問題