[chef] Re: How best to force SSL with application_php and apache2 cookbooks?


Chronological Thread 
  • From: Ryan Walker < >
  • To: "< >" < >
  • Subject: [chef] Re: How best to force SSL with application_php and apache2 cookbooks?
  • Date: Thu, 14 Mar 2013 18:09:00 +0000
  • Accept-language: en-US

I use an attribute in my cookbook that allows me to set the ports for HTTP 
and HTTPS and then have a template file for http and https configuration that 
uses this attribute directly. Then, when I call mod_php_apache2 within the 
application resource, I give it the HTTP template using "webapp_template" 
(which could include the rewrites you want):

    mod_php_apache2 do
      app_root "#{node['php_app']['public']}"
      webapp_template "app.conf.erb"
      server_aliases node["php_app"]["server_aliases"]
    end

Then, outside of the application resource, I check to see if my deployment 
includes any SSL stuff and if so, I call the apache2 cookbook's web_app 
resource directly to create the SSL configuration file and again give it my 
own template that is specific to my app using "template":

  if node["php_app"]["sslcert"] and node["php_app"]["sslkey"]
    include_recipe "apache2::mod_ssl"
   
   <some stuff that creates the SSL key and cert files, but is really long, 
so I'm omitting them>

    web_app "#{node['php_app']['domain']}-ssl" do
      template "https_app.conf.erb"
      server_name node['domain']
      server_aliases node['php_app']['server_aliases']
      port node['php_app']['https_port']
      listen_ports [node['php_app']['http_port'], 
node['php_app']['https_port']]
      sslcert node["php_app"]["sslcert_file"]
      sslkey node["php_app"]["sslkey_file"]
      cacert ndoe["php_app"]["sslcacert_file"] if 
node["php_app"]["sslcacert_file"]
    end
  end

Inside the template files, I set the port with this:

HTTP:
<VirtualHost *:<%= node["php_app"]["http_port"] %>>
...

HTTPS:
<VirtualHost _default_:<%= node["php_app"]["https_port"] %>>

Might be a better way to do this, but this seems to work.

--
Ryan Walker


On Mar 14, 2013, at 12:55 PM, Phil Mocek 
< >
 wrote:

> What is the preferred method of configuring a Web application
> deployed via the [application_php cookbook][1] to accept HTTP over
> SSL connections on port 443 and to redirect requests on 80 to 443?
> 
> I'm using application_php with success, but it is [hard-coded to
> cause the http server to listen on 8080][2].  I don't find any
> discussion of SSL or of alternative ports in documentation of the
> application_php and application cookbooks or of the deploy
> provider.  The apache2 cookbook docs show how to install mod_ssl
> and to specify some cipher configuration, but as far as I can
> tell, none of that matters as long as application_php is
> configuring Apache to do name-based virtual hosting on 8080.  Web
> searches for relevant keywords have turned up nothing relevant.
> 
> 
> References:
> 
> [1]: <http://community.opscode.com/cookbooks/application_php>
> [2]: 
> <https://github.com/opscode-cookbooks/application_php/blob/master/templates/default/php.conf.erb#L1>
> 
> -- 
> Phil Mocek
> http://mocek.org/




Archive powered by MHonArc 2.6.16.

§