我有以下设置和正常工作(我在码头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配置在默认情况下对证书文件具有适当的配置-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这个容器还包含相同的默认值-ssl.conf。
我尝试过在几种不同的配置中运行这个程序:
如果我觉得我错过了什么显而易见的东西,但却不能指手画脚。在像这样的配置中运行SSL时,是否缺少一些东西?
发布于 2017-12-09 14:39:10
通常,如果您的服务器运行在apache服务器后面,则只需配置Apache以处理SSL证书。如果Apache是唯一“外部”公开的服务器,而其他服务器不能从外部世界直接访问,则会发生这种情况。
您需要apache通过url或端口将其代理到其他服务器,例如:
<VirtualHost *:443>
ServerName SERVERNAME_HERE
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
# Proxy pass to other server
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://OTHER_SERVER_IP_WITHIN_DOCKER_NETWORK:8081/
ProxyPassReverse / http://OTHER_SERVER_IP_WITHIN_DOCKER_NETWORK:8081/
<!--Other config-->
</VirtualHost>希望这能帮到你..。
https://stackoverflow.com/questions/47208598
复制相似问题