让SSL在OSX上使用Apache / Passenger

时间:2010-03-13 18:45:32

标签: apache macos ssl passenger

我在开发机器上使用apache / passenger,但需要添加SSL支持(不通过控制面板公开)。我在制作之前已经完成了这个,但由于某种原因,我似乎无法在OSX上使用它。

到目前为止,我所遵循的步骤来自默认的apache osx install:

  1. 安装乘客和乘客偏好窗格。
  2. 添加我的rails应用程序(可行)
  3. 按照详细on the apple website创建我的ca.key,server.crt和server.key。
  4. 此时我需要开始编辑apache配置,所以我补充说:

    # Apache knows to listen on port 443 for ssl requests.
    Listen 443
    Listen 80
    

    当我添加时,我以为我会尝试首先编辑乘客首选窗格生成的配置以使一切正常工作:

    它开始看起来像这样

    <VirtualHost *:80>
      ServerName myapp.local
      DocumentRoot "/Users/jonnii/programming/ruby/myapp/public"
      RailsEnv development
      <Directory "/Users/jonnii/programming/ruby/myapp/public">
        Order allow,deny
        Allow from all
      </Directory>
    </VirtualHost>
    

    然后我追加这个:

    <VirtualHost *:443>
      ServerName myapp.local
      DocumentRoot "/Users/jonnii/programming/ruby/myapp/public"
      RailsEnv development
      <directory "/Users/jonnii/programming/ruby/myapp/public">
        Order allow,deny
        Allow from all
      </directory>
    
      # SSL Configuration
      SSLEngine on
      SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
      SSLOptions +FakeBasicAuth +ExportCertData +StdEnvVars +StrictRequire
    
      #Self Signed certificates
      SSLCertificateFile /private/etc/apache2/ssl.key/server.crt
      SSLCertificateKeyFile /private/etc/apache2/ssl.key/server.key
      SSLCertificateChainFile /private/etc/apache2/ssl.key/ca.crt
    
      SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
    
    </VirtualHost>
    

    引用的文件全部存在(我加倍检查),但现在当我重新启动我的apache时,我甚至无法访问myapp.local。但是,当我在共享首选项面板中单击它时,apache仍然可以为默认页面提供服务。

    非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

我认为Apache不支持SSL的虚拟主机。您可能在某处有另一个SSL虚拟主机条目,而是使用它。删除它,它应该工作。

答案 1 :(得分:2)

Apache的OS X发行版包含一个用于启用SSL的示例配置文件:请参阅/etc/apache2/extra/httpd-ssl.conf。只需确保配置符合您的需求,然后在/etc/apache2/httpd.conf中找到以下行:

#Include /private/etc/apache2/extra/httpd-ssl.conf

通过删除octothorp取消注释。

答案 2 :(得分:2)

而不是定义两个虚拟主机,只需用标题定义一个:

<VirtualHost *:443 *:80>