Configuring MAMP for SSL

Solution 1:

If you're using MAMP 3 or 4 the instructions are slightly different. Here's what worked for me, starting from a fresh install of MAMP 3.0.5 on Mavericks without Pro.

Update: Still works on Yosemite after fixing Apache as described in this answer.

Further Update: Comments suggest this still works at least through MAMP 5.4.

Generate the certificate

This part is straight from the tutorials, so if you already did it you can skip to "Set up MAMP".

Use the terminal to generate a private key in your default folder:

cd ~
# generate a private key
openssl genrsa -des3 -out server.key 2048
# make up a passphrase and remember it, you’ll need it 3 more times.

# generate certificate signing request
openssl req -new -key server.key -out server.csr
# same password
# answer the questions, use "localhost" for your Common Name
Country Name: US
State Name: California
Locality: My City
Organization: My Company
Organization Unit Name: # leave blank
Common Name: localhost
Email address: [email protected]
A challenge password: # leave blank
An optional company name: # leave blank

# generate the certificate from the CSR for 5 years
openssl x509 -req -days 1825 -in server.csr -signkey server.key -out server.crt

# remove the password requirement from the server key
cp server.key server.tmp
openssl rsa -in server.tmp -out server.key

Set up MAMP 3.0.5

Here's where the instructions from previous versions are a little off. The filenames and locations changed and some of the commands in the conf files are different. The following is what worked for me on a fresh install of MAMP 3.0.5.

Move the certificate files (server.key and server.crt) to:

/Applications/MAMP/conf/apache/

Open Apache's httpd.conf file:

/Applications/MAMP/conf/apache/httpd.conf

# set your listen port to 80 (near the top of the file)
Listen 80

# set your ServerName to localhost:80 (default is 8888)
ServerName localhost:80

# uncomment the line that includes the secure (SSL/TLS) connection conf
Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf

Save it and close. Now open Apache's ssl conf file:

/Applications/MAMP/conf/apache/extra/httpd-ssl.conf

Find the <VirtualHost> entry (big block at the end of the file starting with <VirtualHost _default_:443> and ending with </VirtualHost>) and replace the entire thing with:

<VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile /Applications/MAMP/conf/apache/server.crt
        SSLCertificateKeyFile /Applications/MAMP/conf/apache/server.key
</VirtualHost>

Save and close. Start your MAMP server. You should be able to access your document root at http://localhost and https://localhost.

Solution 2:

It's Very Difficult way for https here is simple way.

Open MAMP Pro.

  1. In Server Tab Make Sure Your HTTP Port is 80 and HTTPS Port is 443
  2. Click on Hosts Tab
  3. Click On Plus Arrow for add new host.
  4. Add 127.0.0.1 As Hostname
  5. Click SSL Enable
  6. Select Directory Where is your htdocs or websites folder
  7. Click on SSL Tab
  8. Create Self Signed Certificate By Button Below.
  9. Then it will ask for save location after save it will select certificate auto.
  10. Restart your MAMP Server.

Enjoy!!!!

Type : https with localhost then you can see result.

Next

Solution 3:

I just ran into the same problem but was able to fix it.

I'm running; Mac OS 10.6.7 MAMP 1.9.4

I have only read the tut from webopius which does a good job but it missed something.

I changed in the httpd.conf

Listen 80 not Listen 127.0.0.1:80

I also forgot to run this in the terminal
cp server.key server.tmp
openssl rsa -in server.tmp -out server.key

That removes the password needed to use the key, which if you don't start apache in the terminal, then you can't enter the pass phrase for the cert.

What you can do is, run this command to start apache for MAMP and see if any errors pop out.

sudo /Applications/MAMP/Library/bin/apachectl start

Ok, think that covers about it.

Solution 4:

I followed the webopius instructions as well, but couldn't get SSL pages to load. As mentioned by @djeetee, the definition of the virtual server in httpd.conf and ssl.conf is problematic. The best guide I found recommended making the following revisions to those files:

  1. Before you make these edits, make sure you've generated the key/cert as detailed by webopius and made the basic edits to httpd.conf, such as commenting out the SSL IfDefine statements.
  2. Edit ssl.conf, deleting the existing VirtualHost declaration (around 160 lines, runs to the end of the file) and replacing it with something simple:

    <VirtualHost *:443>
      SSLEngine on
      SSLCertificateFile /Applications/MAMP/conf/ssl/server.crt
      SSLCertificateKeyFile /Applications/MAMP/conf/ssl/server.key
    </VirtualHost>
    

    In my case, I was only enabling SSL for a specific VirtualHost; I had to add a DocumentRoot to the definition to make it work:

    DocumentRoot "/Applications/MAMP/htdocs/subfolder"
    
  3. Edit httpd.conf, again, configuring the VirtualHosts a bit differently than the default.

    NameVirtualHost *:80
    NameVirtualHost *:443
    <VirtualHost *:80>
      DocumentRoot "/Applications/MAMP/htdocs"
      ServerName localhost:80
    </VirtualHost>
    

    Again, in my case I had an additional VirtualHost where my SSL action was going on:

    <VirtualHost *>
      DocumentRoot "/Applications/MAMP/htdocs/subfolder"
      ServerName dev.subfolder.localhost
    </VirtualHost>
    

Again, check out Mr. Lackey's blog for more comprehensive instructions that'll take you through the entire process; these were just the things I did to salvage my install after using Webopius.

Solution 5:

Also make sure you uncomment this line in httpd.conf

# Secure (SSL/TLS) connections
Include /Applications/MAMP/conf/apache/extra/httpd-ssl.conf

Otherwise it will not be included when you start Apache. Mine was commented out for some reason.