Kann nicht mit SSL arbeiten in Docker container
Lassen Sie mich beginnen mit den Worten, dass ich bin kein server-administrator, und es gibt viele Dinge, die ich nicht kenne. Denn ich bin sicher, dass ich irgendwo einen Fehler gemacht meine Docker-container, da SSL nicht funktioniert.
Container ist Apache 2.4 mit PHP 5.6 unter Ubuntu 14.04 und ist mit einer MySQL 5.6 Docker-container.
Begann ich mit diesem basic setup von Docker - Offizielle PHP-Repo. Hier sind die relevanten Dateien:
Dockefile
FROM php:5.6-apache
RUN apt-get update
RUN apt-get install -y net-tools
RUN docker-php-ext-install pdo pdo_mysql
RUN docker-php-ext-install sockets
RUN a2enmod rewrite
RUN a2enmod ssl
ADD 000-default.conf /etc/apache2/sites-enabled/
ADD default-ssl.conf /etc/apache2/sites-anabled/
ADD apache2.conf /etc/apache2/
ADD www-server/www-server/
EXPOSE 443
000-default.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /www-server/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<Directory /home/www-server/>
# allow .htaccess overrides to work
AllowOverride All
DirectoryIndex login.html index.html index.php
</Directory>
<Directory /home/www-server/client>
DirectoryIndex home.html
Options All
AllowOverride All
Require all granted
</Directory>
default-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /home/www-server
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# Enable/Disable SSL for this virtual host.
SSLEngine on
SSLCertificateFile /etc/ssl/certs/site.crt
SSLCertificateKeyFile /etc/ssl/certs/site.key
SSLCACertificatePath /etc/ssl/certs/digicert/
</VirtualHost>
</IfModule>
apache2.conf
Mutex file:/var/lock/apache2 default
PidFile /var/run/apache2/apache2.pid
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User www-data
Group www-data
HostnameLookups Off
ErrorLog /proc/self/fd/2
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
# ports.conf
Listen 80
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /home/www-server/>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
DocumentRoot /home/www-server
AccessFileName .htaccess
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog /proc/self/fd/1 combined
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
# Multiple DirectoryIndex directives within the same context will add
# to the list of resources to look for rather than replace
# https://httpd.apache.org/docs/current/mod/mod_dir.html#directoryindex
DirectoryIndex disabled
DirectoryIndex index.php index.html
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf
HINWEIS: ich entfernt haben, die nicht-relevanten Teile dieser Dateien.
Laufen die Docker-container verwende ich diese:
sudo docker run -v /home/src/ssl-cert:/etc/ssl/certs --name app-gateway --link mysql56:mysql -p 80:80 -p 443:443 -d app-image
Hier ist ein Abschnitt der log-Dateien:
::1 - - [10/Nov/2015:19:26:19 +0000] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.4.10 (Debian) PHP/5.6.15 OpenSSL/1.0.1k (internal dummy connection)"
::1 - - [10/Nov/2015:19:26:20 +0000] "OPTIONS * HTTP/1.0" 200 152 "-" "Apache/2.4.10 (Debian) PHP/5.6.15 OpenSSL/1.0.1k (internal dummy connection)"
72.5.190.136 - - [10/Nov/2015:19:26:21 +0000] "\x16\x03\x01" 400 0 "-" "-"
72.5.190.136 - - [10/Nov/2015:19:26:21 +0000] "\x16\x03\x01" 400 0 "-" "-"
72.5.190.136 - - [10/Nov/2015:19:26:21 +0000] "\x16\x03\x01" 400 0 "-" "-"
Dieser Fehlermeldung im browser:
ERR_SSL_PROTOCOL_ERROR
TL;DR
Ich habe alle Schritte, die ich gefunden habe online zu installieren und zu verwenden, meine SSL-Zertifikate, die in einem Docker-container, aber ich hatte keinen Erfolg, macht es Arbeit. Gibt es etwas, offensichtlich habe ich übersehen, um SSL-Arbeit in einem Docker-container?
InformationsquelleAutor der Frage Jay Blanchard | 2015-11-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Manchmal, vor allem, wenn Sie versucht haben, ein problem zu lösen, für eine lange Zeit und du bist Codierung in eine Konsole auf der Befehlszeile, Sie übersehen die einfachsten Dinge. Haben Sie einen Blick auf diese zwei Zeilen in der Dockerfile:
Den
a
ist fast nicht zu unterscheiden von eineme
so dass die Rechtschreibfehler schwer zu finden. Das Dockerfile erstellt das Bild korrekt und fügt das neue Verzeichnis im container, dann stellen Sie die Konfigurationsdatei in diesem Verzeichnis.Da kein Fehler geworfen wird, für ein unbekanntes Verzeichnis und die image erfolgreich erstellt, es wird laufen, aber in diesem Fall wird der SSL wird nicht richtig arbeiten.
InformationsquelleAutor der Antwort Jay Blanchard