通过Apache代理进行SSL

时间:2015-05-29 20:53:20

标签: apache ssl https proxy

我有一台运行大量虚拟机的服务器,但只有一台公共IP(绝对无法获得更多)。其中许多虚拟机使用端口80来显示Web内容。目前,我使用不同的端口来访问这些WebUI,例如mydomain.com:9000,mydomain.com:7000,依此类推。

我想要的是拥有子域名,更像是service1.mydomain.com,service2.mydomain.com ...所以我创建了一个代理虚拟机,我在其上重定向来自端口80的所有内容,并根据内容重定向到内部IP子域名是。

现在我的问题如下:我有来自mydomain.com/www.mydomain.com的SSL证书。我如何设置它以便代理传播它?对我来说,解决方案是:

  • 证书在代理上,因此代理执行此操作: 内部VM:http ---> proxy:http到https ---->外部世界:https
  • 证书位于托管服务的VM上,代理不会传播证书,因此代理执行此操作: 内部VM:https --->代理https到http --->外部世界:http
  • 证书位于托管服务的VM上,代理传播证书,因此代理执行此操作: 内部VM:https --->代理:https --->外部世界:https

我更喜欢最后一个解决方案,但我不知道如何在两个Apaches上设置它,因为知道启用了SSL的虚拟机上的Apache配置如下:

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        TransferLog ${APACHE_LOG_DIR}/transfer.log
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
        CustomLog ${APACHE_LOG_DIR}/ssl_request.log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

        SSLEngine on
        SSLProtocol all -SSLv2
        SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM

        SSLCertificateFile    /etc/apache2/ssl/ssl.crt
        SSLCertificateKeyFile /etc/apache2/ssl/ssl.key
        SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>

        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>
</VirtualHost>
</IfModule>

提前致谢;)

0 个答案:

没有答案