如何为虚拟主机配置 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

SSL 握手发生在 HTTP 标头与主机字段一起发送之前,但主机名存在于 SSL 握手中使用的证书中。要克服这个问题,您的客户端和服务器必须支持 RFC 3546 TLS 扩展和服务器名称指示。在 Microsoft 客户端世界中,该支持是在 Vista 上的 IE7 中引入的。我不知道 Apache 的情况。

“传统”方法(RFC 3546 之前)是每个 SSL 站点都有一个 IP 地址,这样就可以避免虚拟主机问题。引入服务器名称指示就是为了解决这个问题。我至少希望看到服务器配置条目使用自己的证书/私钥对来配置每个虚拟主机。

更多关于Apache 虚拟主机。看来您也需要确保您有一个合适的版本。

相关内容