apache - 使用虚拟主机时如何在 XAMPP 中使用 https (SSL)

标签 apache ssl https xampp virtualhost

我正在我的本地机器上编写一个 php 应用程序,想测试一下 SSL 是否正常工作。请耐心等待,因为这是我第一次使用 SSL。

到目前为止,这是我所做的:

  1. 创建了 SSL 证书。我关注了这个 this 的第一部分创建证书的教程。
  2. 我将 server.crt 文件导入到 chrome。
  3. 删除了 php.ini;extension=php_openssl.dll 前面的分号 ( reference )
  4. 根据 this 编辑了我的 httpd-vhosts.conf 文件页。该文件的相关部分如下。这是完整的文件:http://pastebin.com/k6Jh2eR6
    <VirtualHost *>
        DocumentRoot "C:\Users\user_name\Documents\project_one"
        ServerName project_one.localhost
        SSLEngine on
        SSLCertificateFile "conf/ssl.crt/server.crt"
        SSLCertificateKeyFile "conf/ssl.key/server.key"
        <Directory "C:\Users\user_name\Documents\project_one">
            AllowOverride All
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>
    

我通常会通过输入 http://project_one.localhost

来访问我的项目

当尝试通过在 chrome 中键入 https://project_one.localhost 访问我的项目时,我会自动转发到 https://project_one.localhost/xampp/(好像 XAMPP 根本不将 https://project_one.localhost 识别为子域,并将其视为我正在输入 https://localhost) 知道我哪里搞砸了吗?

注意:

  • LoadModule ssl_module modules/mod_ssl.sohttpd.conf 文件中取消注释

最佳答案

SSL,属于 HTTPS://url.here/ variety,完全由 Apache 处理,与 PHP、任何 PHP 的扩展/模块或任何 php.ini 设置无关。

一个典型的 SSL Enabled VirtualHost 看起来像这样并且至少包含这些部分......

<VirtualHost *:443>
    DocumentRoot "C:/WampDeveloper/Websites/www.example.com/webroot"
    ServerName www.example.com
    ServerAlias example.com

    SSLEngine On

    SSLCertificateFile "C:/WampDeveloper/Websites/www.example.com/certs/public.crt"
    SSLCertificateKeyFile "C:/WampDeveloper/Websites/www.example.com/certs/private.key"

    <Directory "C:/WampDeveloper/Websites/www.example.com/webroot">
        Options All
        AllowOverride All
        order allow,deny
        allow from all
    </Directory>

</VirtualHost>

(以上路径来 self 的 WampDeveloper Pro 设置,Xampp 的会略有不同)

你的 <VirtualHost *>线路有问题。它需要一个端口号,对于 HTTPS://URL 始终为 443,并结合 IP 地址或前面的星号。如果使用星星,还有一个 NameVirtualHost *:443线...

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
    DocumentRoot "C:\xampp\htdocs"
    ServerName localhost
</VirtualHost>
<VirtualHost *:443>
    DocumentRoot "C:\Users\user_name\Documents\project_one"
    ServerName project_one.localhost
    SSLEngine on
    SSLCertificateFile "conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "conf/ssl.key/server.key"
    <Directory "C:\Users\user_name\Documents\project_one">
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot "C:\Users\user_name\Documents\project_two"
    ServerName project_two.localhost
    <Directory "C:\Users\user_name\Documents\project_two">
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

关于apache - 使用虚拟主机时如何在 XAMPP 中使用 https (SSL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16430574/

相关文章:

Apache mod 规避导致 index.php 权限被拒绝

ssl - HTTPS 通信中的根 CA、中间证书和 Web 服务器证书

apache - 在运行 Tomcat 的 EC2 实例上终止 HTTPS

perl - 如何在 Perl CGI 中编码以包含 https 而不是 http 的操作

c# - 您正在使用通过 http 下载的方式。目前 Unity 将 NSAllowsArbitraryLoads 添加到 Info.plist 以简化转换

c - 如何在 Autoconf/Automake 项目中拥有 apache 模块和依赖的共享库

java - 在 solr 的类路径中找不到资源 'solrconfig.xml'

python - celery 如恶魔

.htaccess - 修改我的 htaccess 以重定向到 SSL URL

javascript - https 请求基本认证 node.js