Accessing apache on a vagrant sandbox using ssl (port forwarding)

17,003

1) Configure the file Vagrantfile

Vagrant::Config.run do |config|
    config.vm.box = "lucid32"
    config.vm.network "33.33.33.10"
    config.vm.forward_port "http", 80, 8080
end

2) Access your VM "lucid32"

vagrant ssh

3) Inside your VM, configure the Apache "Virtual Host":

<VirtualHost 33.33.33.10:80>
    ServerName        your-domain.dev
    DocumentRoot    /vagrant
    DirectoryIndex    index.php index.html index.htm

    <Directory /vagrant>
        AllowOverride All
        Allow from All
    </Directory>
</VirtualHost>

<VirtualHost 33.33.33.10:443>
    ServerName        your-domain.dev
    DocumentRoot    /vagrant
    DirectoryIndex    index.php index.html index.htm

    <Directory /vagrant>
        AllowOverride All
        Allow from All
    </Directory>

    SSLEngine on
    SSLCertificateFile /path/to/certicate/apache.pem
</VirtualHost>

4) Exit VM and configure the file "hosts" in your host machine:

33.33.33.10    your-domain.dev
Share:
17,003
Mark Baker
Author by

Mark Baker

ZCE PHP 5.3. Senior Developer at Recharge.com Coordinator of the PHPOffice suite of Open Source libraries (PHPExcel, PHPPowerPoint, PHPWord, PHPProject and PHPVisio) on github - https://github.com/PHPOffice/ http://www.zend.com/img/yellowpages/zce_php5-3_logo.gif

Updated on June 07, 2022

Comments

  • Mark Baker
    Mark Baker almost 2 years

    I've built a vagrant/virtualbox web server as a development sandbox, and configured apache in the VM for ssl (on the default port 443, with a self-signed certificate). I've tested pages on the VM itself using curl

    curl -v -k https://mysite.mydomain.com/testSearch/results?postcode=WN8+0BA
    

    and it seems to work quite happily, so I'm satisfied that apache is correctly configured and working in the VM.

    However, when I try to access the VM from my host's browsers over https, I'm unable to do so.

    I've added

    config.vm.forward_port "https", 443, 8443
    

    to my vagrantfile, but trying to access the url

    https://mysite.mydomain.com:8443/testSearch/results?postcode=WN8+0BA
    

    simply can't display the page I've tried with several different browsers: IE gives a meaningless "Internet Explorer cannot display the webpage"; Chrome gives

    SSL connection error
    Unable to make a secure connection to the server. This may be a problem with the server or it may be requiring a client authentication certificate that you don't have.
    Error 107 (net::ERR_SSL_PROTOCOL_ERROR): SSL protocol error.
    

    Firefox gives me

    An error occurred during a connection to mysite.mydomain.com:8443.
    SSL received a record that exceeded the maximum permissible length.
    (Error code: ssl_error_rx_record_too_long)
    

    but even the Firebug Net tab doesn't tell me anything more than that.

    I'm not getting anything in the access or error logs on the VM apache, so I suspect that vagrant isn't forwarding the ssl at all.

    • VM Guest OS: centos56x64
    • Host: Windows 7 64-bit
    • JRuby: 1.6.3 (ruby-1.8.7-p330) (2011-07-07 965162f) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_24) [Windows 7-amd64-java]
    • Vagrant: 0.7.8
    • VirtualBox: 4.0.12

    Any assistance would be gratefully accepted.

  • Martin de Keijzer
    Martin de Keijzer over 10 years
    When using this solution you have to do steps 2 and 3 over and over again when you destroy the Vagrant box. Using a provisioning (bash) script, Chef or Puppet will make this task a lot less repetitive.
  • Morgan Delaney
    Morgan Delaney about 9 years
    For googlers, I had to specify both a SSLCertificateFile to a .crt file and a SSLCertificateKeyFile to a .key file.