如何仅在指定的 XAMPP 目录上启用 SSL

Posted

技术标签:

【中文标题】如何仅在指定的 XAMPP 目录上启用 SSL【英文标题】:How to enable SSL only on specified XAMPP directories 【发布时间】:2014-01-10 22:02:56 【问题描述】:

我已经能够使用 makecert 制作一个自签名证书,该证书目前在 C://XAMPP/htdocs 中的所有目录上启用 HTTPS

我有两个想要不同的目录,

c:/XAMPP/htdocs/PLACEHOLDER1 
c:/XAMPP/htdocs/PLACEHOLDER2

我想知道是否可以将 SSL 范围限制在一个目录中,例如在本例中为“placeholder1”。

这是我第一次使用 SSL,如有任何混淆,请见谅。

【问题讨论】:

【参考方案1】:

http://robsnotebook.com/xampp-ssl-encrypt-passwords 提供了一些关于如何使文件夹只能通过 SSL 加密访问的有用信息。它具体涵盖了这两个项目,这不是直接引用,而是要回答您的问题的本质摘录:

使文件夹只能通过 SSL 加密访问 首先,我们需要通知 Apache 您要加密的文件夹应该始终使用加密(并且永远不要明文加密)。这是通过在配置文件中每个所需的<Directory> 列表中放置一个 SSLRequireSSL 指令来完成的(可以将它放在最后,就在</Directory> 之前)。

Alias /web_folder_name "C:/xampp/foldername"
<Directory "C:/xampp/foldername">
    ...
    ...
    SSLRequireSSL
</Directory>

将某些文件夹的“http”重定向到“https”

下一个可选步骤是将“http”请求重定向到我们想要保护的页面的“https”请求。这对用户更加友好,并允许您在输入地址时仍然使用 http(并自动切换到 https:// 和加密)。如果您不这样做,并且使用了 SSLRequireSSL,您将只能通过键入 https:// 来访问这些页面。这很好,可能更安全一点,但不是那么用户友好。为了完成重定向,我们将使用 mod_rewrite 以便我们不必在配置文件的这一部分中使用服务器名称。这有助于减少配置文件中写入服务器名称的位置(使您的配置文件更易于维护)。

首先,我们需要确保启用了 mod_rewrite。为此,请编辑 c:\xampp\apache\conf\httpd.conf 并删除此行中的注释(# 字符):

#LoadModule rewrite_module modules/mod_rewrite.so

让它看起来像这样:

LoadModule rewrite_module modules/mod_rewrite.so

现在,将以下文本粘贴到c:\xampp\apache\conf\extra\httpd-xampp.conf 的顶部:

<IfModule mod_rewrite.c>
    RewriteEngine On

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

    # Redirect /phpMyAdmin folder to https
    RewriteCond %HTTPS !=on
    RewriteCond %REQUEST_URI phpmyadmin
    RewriteRule ^(.*) https://%SERVER_NAME$1 [R,L]

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

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

如果您想要重定向到 https:// 的其他文件夹,请在下面添加通用文本(但替换您的文件夹名称):

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

【讨论】:

以上是关于如何仅在指定的 XAMPP 目录上启用 SSL的主要内容,如果未能解决你的问题,请参考以下文章

在 XAMPP 中为 CURL 启用 SSL 支持

在本地 xampp/apache 服务器上设置 SSL

为 XAMPP 启用 SSL 后 Apache 无法启动

UITableView:仅在指定部分启用分隔符

如何在 XAMPP 上启用 mysqli?

如何在 xampp linux 上启用 mcrypt php 扩展