【问题标题】:How do I use https (SSL) in XAMPP while using virtual hosts使用虚拟主机时如何在 XAMPP 中使用 https (SSL)
【发布时间】:2013-05-02 02:05:35
【问题描述】:

我正在本地机器上编写一个 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 文件中未注释

【问题讨论】:

  • 嗨,你能找到解决这个问题的方法吗?稍微观察一下,虽然这是在很晚的时候出现,但我无法在您的配置文件中找到“SSLRequireSSL”这一行。
  • 我认为您需要生成服务器名称为 'project_one.localhost' 的 ssl 证书
  • @user28864 - 有关在主题备用名称 (SAN) 中创建具有多个 DNS 名称(如 localhostlocalhost.localdomainproject_one.localhost)的证书的说明,请参阅 How do I edit a self signed certificate created using openssl xampp。跨度>

标签: apache ssl https xampp virtualhost


【解决方案1】:

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

一个典型的启用 SSL 的 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>

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

您的&lt;VirtualHost *&gt; 线路有故障。它需要一个端口号,对于 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>

【讨论】:

  • 是的。我按照你的指示和它的运行。谢谢。
【解决方案2】:

这是一个简单的步骤。

  1. 转到 C:\xampp\apache\conf

打开httpd.conf

并启用ssl extensionsRemove # from line

LoadModule ssl_module modules/mod_ssl.so
  1. 转到 C:\xampp\apache\conf\extra

打开 httpd-vhosts.conf

添加新的虚拟主机或编辑现有的

<VirtualHost *:443>   
	DocumentRoot "C:/xampp/htdocs/PROJECTNAME" 
	ServerName www.pl.f24sdev.com
	<Directory C:/xampp/htdocs/PROJECTPATH>
		AllowOverride All
		Order Deny,Allow   
		Allow from all  
	</Directory>
	SSLEngine on
	SSLCertificateFile "conf/ssl.crt/server.crt"
	SSLCertificateKeyFile "conf/ssl.key/server.key"   
</VirtualHost>

【讨论】:

    【解决方案3】:

    这可能是一个老问题,但我还是把我的答案放在这里以供将来参考

    我是 使用 XAMPP 3.2.1,于 2013 年 5 月 7 日编译

    同时启用VirtualHostSSL 这就是我所做的。 (我使用的是 Windows 7)

    1. 您的 windows HOST 文件必须已设置
    2. 转到位于xampp\apache\conf\extrahttpd-ssl.conf

    我刚刚复制了 _default_ virtualhost 并添加了我的配置。我删除了所有较短的 cmets,并将其粘贴在默认 virtualHost 下方,只需更改 DocumentRootservername 然后重新启动 apache。

    <VirtualHost *:443>
        DocumentRoot "***path/to/your/project}***"
        ServerName ***yourdomain***
        ServerAdmin admin@example.com
        ErrorLog "C:/xampp/apache/logs/error.log"
        TransferLog "C:/xampp/apache/logs/access.log"
        SSLEngine on
        SSLCertificateFile "conf/ssl.crt/server.crt"
        SSLCertificateKeyFile "conf/ssl.key/server.key"
    
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory "C:/xampp/apache/cgi-bin">
            SSLOptions +StdEnvVars
        </Directory>
    
        BrowserMatch "MSIE [2-5]" \
                 nokeepalive ssl-unclean-shutdown \
                 downgrade-1.0 force-response-1.0
    
        CustomLog "C:/xampp/apache/logs/ssl_request.log" \
                  "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    </VirtualHost>
    

    【讨论】:

    • ServerName应该设置什么?本地主机?
    • @Saurabh 这是您在 HOSTS 文件中添加以访问该页面的内容。
    【解决方案4】:

    您使用的是哪个版本的 Apache? NameVirtualHost 在 2.4 版本中不可用。

    在httpd.conf中取消注释Include conf/extra/httpd-ssl.conf并添加以下内容(根据xampp的路径修复路径)。这将启用https://localhost

    <IfModule ssl_module>
    Listen 443
    AddType application/x-x509-ca-cert .crt
    AddType application/x-pkcs7-crl    .crlss phrase on stdout.
    SSLPassPhraseDialog  builtin
    SSLSessionCache        "shmcb:E:/PROGRA\~1/AMPPS/apache/logs/ssl_scache(512000)"
    SSLSessionCacheTimeout  300
    Mutex default
    
    <VirtualHost _default_:443>
    DocumentRoot "E:/Program Files/AMPPS/www"
    ServerName localhost:443
    ServerAdmin you@127.0.0.1
    ErrorLog "E:/Program Files/AMPPS/apache/logs/ssl_error.log"
    TransferLog "E:/Program Files/AMPPS/apache/logs/ssl_access.log"
    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile "E:/Program Files/AMPPS/apache/conf/ssl_crt/server.crt"
    #SSLCertificateFile "E:/Program Files/AMPPS/apache/conf/server-dsa.crt"
    SSLCertificateKeyFile "E:/Program Files/AMPPS/apache/conf/ssl_key/server.key"
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory "E:/Program Files/AMPPS/www/cgi-bin">
        SSLOptions +StdEnvVars
    </Directory>
    BrowserMatch ".*MSIE.*" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0
    CustomLog "E:/Program Files/AMPPS/apache/logs/ssl_request.log" \
              "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    
    </VirtualHost>
    </IfModule>
    

    如果您希望 project_one.localhost 等其他域具有安全的 http 连接,请在 httpd.conf 或 httpd-vhosts.conf 中添加以下虚拟主机(必须包含在 httpd.conf 中)

    <IfModule ssl_module>
    
    <VirtualHost 127.0.0.1:443>
    <Directory "e:/program files/ampps/www/project_one.localhost">
    Options FollowSymLinks Indexes
    AllowOverride All
    Order deny,allow
    allow from All
    </Directory>
    ServerName project_one.localhost
    ServerAlias project_one.localhost
    ScriptAlias /cgi-bin/ "e:/program files/ampps/www/project_one.localhost/cgi-bin/"
    DocumentRoot "e:/program files/ampps/www/project_one.localhost"
    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile "E:\Program Files\AMPPS/apache/conf/ssl_crt/project_one.localhost.crt"
    SSLCertificateKeyFile "E:\Program Files\AMPPS/apache/conf/ssl_key/project_one.localhost.key"
    ErrorLog "E:/Program Files/AMPPS/apache/logs/project_one.localhost_ssl_error.log"
    TransferLog "E:/Program Files/AMPPS/apache/logs/project_one.localhost_ssl_access.log"
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory "e:/program files/ampps/www/project_one.localhost/cgi-bin/">
    SSLOptions +StdEnvVars
    </Directory>
    BrowserMatch ".*MSIE.*" \
        nokeepalive ssl-unclean-shutdown \
        downgrade-1.0 force-response-1.0
    CustomLog "E:/Program Files/AMPPS/apache/logs/project_one.localhost_ssl_request.log" \
        "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    </VirtualHost>
    </IfModule>
    

    注意:您必须在 hosts 文件中添加一个条目 127.0.0.1 project_one.localhost

    【讨论】:

    猜你喜欢
    • 2021-09-03
    • 2023-03-18
    • 2010-09-05
    • 1970-01-01
    • 2016-11-29
    • 2018-07-18
    • 2019-04-19
    • 2021-02-10
    • 2018-06-19
    相关资源
    最近更新 更多