如何为虚拟主机配置 SSL

如何为虚拟主机配置 SSL

我在虚拟主机中设置 SSL 时遇到问题。该设置在不安全的网站上运行良好。我希望它能与启用 SSL 的网站配合使用。

我的httpd-vhosts.conf如下:

NameVirtualHost 127.0.0.1
<IfModule mod_rewrite.c>
    RewriteEngine On

    # Redirect /binDebug folder to https
    RewriteCond %{HTTPS} !=on
    RewriteCond %{REQUEST_URI} binDebug
    RewriteRule ^(.*) https://%{SERVER_NAME}$1 [R,L]
</IfModule>

        <VirtualHost localhost>
            ServerName localhost
            DocumentRoot "C:\xampp\htdocs"
            DirectoryIndex index.php index.html

            <Directory "C:\xampp\htdocs">            
                AllowOverride All
            </Directory>
        </VirtualHost>


        <VirtualHost virtual.c7beta.com>
            ServerName virtual.c7beta.com
            DocumentRoot "C:\Users\zee\Documents\Flex Builder 3\CLOUD\bin-debug"
            DirectoryIndex index.php index.html
             Alias /binDebug "C:\Users\zee\Documents\Flex Builder 3\CLOUD\bin-debug/"
            <Directory "C:\Users\zee\Documents\Flex Builder 3\CLOUD\bin-debug">
                Options Indexes FollowSymLinks Includes ExecCGI
                AllowOverride All
                Order allow,deny
                Allow from all
    #   SSLRequireSSL

            </Directory>
        </VirtualHost>

        <VirtualHost virtual.app.c7beta.com>
            ServerName virtual.app.c7beta.com
            DocumentRoot "C:\development\app_server\httpdocs"
            DirectoryIndex index.php index.html

            <Directory "C:\development\app_server\httpdocs">
                Options Indexes FollowSymLinks Includes ExecCGI
                AllowOverride All
                Order allow,deny
                Allow from all
    #   SSLRequireSSL

            </Directory>
        </VirtualHost>

        <VirtualHost virtual.s1.c7beta.com>
            ServerName virtual.s1.c7beta.com
            DocumentRoot "C:\development\storage_server\httpdocs"
            DirectoryIndex index.php index.html

            <Directory "C:\development\storage_server\httpdocs">
                Options Indexes FollowSymLinks Includes ExecCGI
                AllowOverride All
                Order allow,deny
                Allow from all
    #   SSLRequireSSL

            </Directory>
        </VirtualHost>

现在 SSLRequiesSSL 已被注释。有人可以检查一下并告诉我应该做哪些更改才能使用 https,就像 http 的工作方式一样。

我按照以下建议进行了配置更改:http://robsnotebook.com/xampp-ssl-encrypt-passwords看起来运行正常。但当我输入 servername.com 时,它仍然重定向到 servername.com/xampp

请帮助 Zeeshan

答案1

确保在 VirtualHost foo.bar 行之后输入端口号,即..

<VirtualHost Virtual.app.c7beta.com:443>
...
</VirtualHost>

<VirtualHost Virtual1.app.c7beta.com:80>
....
</VirtualHost>

这是根据 apache 配置文档设置虚拟 SSL 服务器的。

答案2

SSL 证书在 SSL 协商期间呈现给浏览器,该协商发生在 HTTP 协议层启动之前,并且 Host: 标头被发送到服务器,说明需要哪个站点。

您有两个选择:

  1. 通过 subjectAltName 别名(或通配符)使用对多个主机有效的证书
  2. 使用 TLS ServerNameIndication 在 SSL/TLS 设置期间发送所需的服务器主机名

1 很简单,只要你能与 CA 打交道来获得这样的证书即可。2 要求客户端和服务器都支持 TLS,客户端支持 SNI(这意味着非常现代的浏览器),服务器也支持它,这对于 Apache 来说意味着需要补丁。请参阅https://sni.velox.ch/补丁。

相关内容