Lassen Sie mich damit beginnen, dass ich kein Serveradministrator bin und es viele Dinge gibt, die ich nicht kenne. Aus diesem Grund bin ich sicher, dass ich bei der Einrichtung meines Docker-Containers einen Fehler gemacht habe, da SSL nicht funktioniert.SSL kann nicht im Docker-Container arbeiten
Der Container läuft mit Apache 2.4 mit PHP 5.6 unter Ubuntu 14.04 und ist mit einem MySQL 5.6 Docker Container verbunden.
Ich begann mit dieser grundlegenden Einrichtung von Docker - Official 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 [email protected]
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
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 habe nicht relevante Teile dieser Dateien entfernt.
Um die Docker Behälter ich diese verwenden laufen:
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 Protokolldateien:
::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 "-" "-"
Mit diesem Fehler im Browser:
ERR_SSL_PROTOCOL_ERROR
TL; DR Ich habe alle Schritte verfolgt, die ich online gefunden habe, um meine SSL-Zertifikate in einem Docker-Container zu installieren und zu verwenden, aber ich hatte keinen Erfolg dabei. Gibt es etwas Offensichtliches, das ich übersehen habe, damit SSL in einem Docker-Container funktioniert?
Jetzt muss das weh tun – RiggsFolly
Hoooo Junge, tut es tatsächlich. Und * mehrere * Leute haben es verpasst @RiggsFolly –
Deshalb mag ich IDEs, die Rechtschreibprüfungen haben :) –