【发布时间】:2018-04-22 20:17:38
【问题描述】:
我有以下设置并且工作正常(我在 Docker 1.6 上):
一个 Docker 容器充当在单个 Docker 容器中运行的其他 Web 应用程序的虚拟主机代理。 (我应该补充一点,我不是配置服务器或网络方面的专家。)
我一直在尝试将 SSL 添加到设置中,但收效甚微。每个容器都会在主机上挂载证书的文件目录。例如,一旦我使用以下内容运行容器:
docker run -d -P --name build \
-v /home/applications/src/ssl-cert:/etc/ssl/certs \
-e "DBL=mysql:dbname=build;host=192.168.0.1;port=3306" \
-e "DB_USER=foo" -e "DB_PASS=bar" \
--link mysql56:mysql \
--add-host dockerhost:`/sbin/ip addr | grep 'eth0' | grep 'inet' | cut -d'/' -f1 | awk '{print $2}'` \
-p 8001:80 -p 4431:443 \
repos/build:latest
如果我尝试连接到https://build.example.com,我会收到证书错误并且无法连接。容器的 Apache 配置在 default-ssl.conf 中为证书文件提供了适当的配置(如果这是一个独立实例,则可以使用):
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/
# Enable/Disable SSL for this virtual host.
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
SSLCertificateFile /etc/ssl/certs/build.crt
SSLCertificateKeyFile /etc/ssl/certs/build.key
SSLCACertificateFile /etc/ssl/certs/digicert/digicertca.crt
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
然后我尝试为代理容器运行以下命令:
docker run -it -d -P --name apache_proxy \
-v /home/applications/src/ssl-cert:/etc/ssl/certs \
-p 8000:80 -p 443:443 \
repos/apache-proxy:latest
此容器也包含相同的 default-ssl.conf。
我尝试在几种不同的配置中运行它:
- 仅在 Apache 代理容器中运行 SSL 配置
- 仅在构建应用程序容器中运行 SSL 配置
- 在两个容器中运行 SSL 配置
如果感觉好像我错过了一些明显的东西,但无法确定它会是什么。在这样的配置中运行 SSL 时,我有什么遗漏吗?
【问题讨论】:
-
apache 启动时没有任何抱怨吗?什么是确切的 ssl 错误?
-
Apache 启动并运行 fin @Robert。没有 SSL 错误保存,该站点将无法运行。
-
我想澄清一下:“我收到证书错误,无法连接。”能否提供详细信息?
-
我收到 503 错误。
-
您应该在 apache 错误日志中看到有关该 503 的更多详细信息。
标签: apache ssl docker virtualhost http-proxy