2011-06-10 42 views
0

我很明显错过了一些东西,可能很明显,但我只是没有看到它。我在MBP上配置了自签名证书(通过Macports运行Apache)。它是*.local的通配证书,我为我正在使用的站点配置了命名虚拟主机,但是当我尝试通过https访问它时,PHP的$_SERVER变量指示SSL访问未被识别/遵守。即使我正在访问https://mynamedhost.localPORT键报告端口80,并且不存在HTTPS键。OSX本地SSL不受尊重?

这是一个CakePHP站点,所以缺少HTTPS键可防止RequestHandler::isSSL()报告为真。任何见解将不胜感激。

这里是我的httpd设置输出:

$ httpd -S 
VirtualHost configuration: 
wildcard NameVirtualHosts and _default_ servers: 
*:443     is a NameVirtualHost 
    default server www.example.com (/opt/local/apache2/conf/extra/httpd-ssl.conf:74) 
    port 443 namevhost www.example.com (/opt/local/apache2/conf/extra/httpd-ssl.conf:74) 
    port 443 namevhost mynamedhost.local (/Users/rob/Library/Application Support/MacPorts/apache/conf.d/mynamedhost.conf:17) 
*:80     is a NameVirtualHost 
    default server localhost (/Users/rob/Dropbox/Application Support/apache/conf.d.osx/_localhost.conf:1) 
    port 80 namevhost localhost (/Users/rob/Dropbox/Application Support/apache/conf.d.osx/_localhost.conf:1) 
    port 80 namevhost mynamedhost.local (/Users/rob/Library/Application Support/MacPorts/apache/conf.d/mynamedhost.conf:1) 
Syntax OK 

namedhost虚拟主机定义是这样的:

<VirtualHost *:80> 
    ServerName mynamedhost.local 
    DocumentRoot /var/www/mynamedhost/app/webroot 

    ErrorLog  /var/www/.logs/mynamedhost_error_log 
    CustomLog /var/www/.logs/mynamedhost_access_log common 

    <Directory /var/www/mynamedhost/app/webroot> 
    Options FollowSymLinks Indexes 
    AllowOverride All 
    Order deny,allow 
    Allow from all 
    </Directory> 
</VirtualHost> 

<VirtualHost *:443> 
    ServerName namedhost.local 
    DocumentRoot /var/www/mynamedhost/app/webroot 

    ErrorLog  /var/www/.logs/mynamedhost_error_log 
    CustomLog /var/www/.logs/mynamedhost_access_log common 

    <Directory /var/www/mynamedhost/app/webroot> 
    Options FollowSymLinks Indexes 
    AllowOverride All 
    Order deny,allow 
    Allow from all 
    </Directory> 
</VirtualHost> 

回答

0

明白了。在Macports extras/httpd-ssl.conf文件中,SSL引擎已打开并定义了证书文件。我认为这会滴流到自定义的虚拟主机,但我错了。在云雀,我决定休学以下到*:443虚拟主机定义:

SSLEngine on 
SSLCertificateFile "/opt/local/apache2/conf/server.crt" 
SSLCertificateKeyFile "/opt/local/apache2/conf/server.key" 

现在似乎一切都按预期运行。我仍然认为我的配置有些奇怪,但现在必须要好起来。对于任何在家玩的人来说,修改的虚拟主机配置看起来像这样(如上所示的*:80配置没有改变):

<VirtualHost *:443> 
    ServerName mynamedhost.local 
    DocumentRoot /var/www/mynamedhost/app/webroot 

    ErrorLog  /var/www/.logs/mynamedhost_error_log 
    CustomLog /var/www/.logs/mynamedhost_access_log common 

    SSLEngine on 
    SSLCertificateFile "/opt/local/apache2/conf/server.crt" 
    SSLCertificateKeyFile "/opt/local/apache2/conf/server.key" 

    <Directory /var/www/mynamedhost/app/webroot> 
    Options FollowSymLinks Indexes 
    AllowOverride All 
    Order deny,allow 
    Allow from all 
    </Directory> 
</VirtualHost>