让SSL在OSX上与Apache/Passenger协同工作

让SSL在OSX上与Apache/Passenger协同工作,apache,macos,ssl,passenger,Apache,Macos,Ssl,Passenger,我在我的开发机器上使用apache/passenger,但需要添加SSL支持(控制面板中没有公开的东西)。我以前在生产中做过,但由于某些原因,我似乎无法在OSX上使用它 到目前为止,我遵循的步骤是默认的apache osx安装: 安装乘客和乘客偏好窗格 添加我的rails应用程序(此应用程序有效) 按照详细说明创建我的ca.key、server.crt和server.key 此时,我需要开始编辑apache配置,因此我添加了: # Apache knows to listen on port 4

我在我的开发机器上使用apache/passenger,但需要添加SSL支持(控制面板中没有公开的东西)。我以前在生产中做过,但由于某些原因,我似乎无法在OSX上使用它

到目前为止,我遵循的步骤是默认的apache osx安装:

  • 安装乘客和乘客偏好窗格
  • 添加我的rails应用程序(此应用程序有效)
  • 按照详细说明创建我的ca.key、server.crt和server.key 此时,我需要开始编辑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>
    
    
    ServerName myapp.local
    DocumentRoot“/Users/jonnii/programming/ruby/myapp/public”
    RailsEnv开发
    命令允许,拒绝
    通融
    
    然后,我附加以下内容:

    
    ServerName myapp.local
    DocumentRoot“/Users/jonnii/programming/ruby/myapp/public”
    RailsEnv开发
    命令允许,拒绝
    通融
    #SSL配置
    斯伦金安
    SSLCipherSuite全部:!ADH:!出口56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
    SSLOptions+FakeBasicAuth+ExportCertData+StdEnvVars+StrictRequire
    #自签名证书
    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用户代理“*MSIE.*”nokeepalive ssl不干净关机降级-1.0强制响应-1.0
    
    所有引用的文件都存在(我检查了两次),但现在当我重新启动apache时,我甚至无法访问
    myapp.local
    。但是,当我在共享首选项面板中单击默认页面时,apache仍然可以为其提供服务器


    任何帮助都将不胜感激。

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

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

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

    并通过删除OctorOp来取消注释。

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

    <VirtualHost *:443 *:80>
    
    
    
    <VirtualHost *:443 *:80>