Доступ к apache в бродячей песочнице с помощью ssl (переадресация портов) - PullRequest
14 голосов
/ 12 августа 2011

Я создал веб-сервер vagrant / virtualbox в качестве изолированной программной среды разработки и настроил apache в виртуальной машине для ssl (по умолчанию порт 443 с самозаверяющим сертификатом).Я тестировал страницы на самой виртуальной машине, используя curl

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

, и она, кажется, работает довольно счастливо, поэтому я удовлетворен тем, что apache правильно настроен и работает в виртуальной машине.

Однако, когда я пытаюсь получить доступ к виртуальной машине из браузеров моего хоста через https, я не могу этого сделать.

Я добавил

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

в свой vagrantfile, но пытаюсьдоступ к URL

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

просто не может отобразить страницу, которую я пробовал в нескольких различных браузерах: IE выдает бессмысленное «Internet Explorer не может отобразить веб-страницу»;Chrome дает

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 дает мне

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)

, но даже вкладка Firebug Net ничего не говорит мне об этом.

Я не получаючто-либо в журналах доступа или ошибок на виртуальной машине Apache, поэтому я подозреваю, что vagrant вообще не пересылает ssl.

  • Гостевая ОС VM: centos56x64
  • Хост: Windows 764-разрядная
  • JRuby: 1.6.3 (ruby-1.8.7-p330) (2011-07-07 965162f) (64-разрядный сервер Java HotSpot (TM) VM 1.6.0_24) [Windows 7-amd64-java]
  • Vagrant: 0.7.8
  • VirtualBox: 4.0.12

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

24 голосов
/ 15 ноября 2011

1) Настроить файл 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) Получить доступ к вашей виртуальной машине "lucid32"

vagrant ssh

3) Внутри вашей виртуальной машины настройте Apache «Виртуальный хост»:

<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) Выйдите из виртуальной машины и настройте файл «hosts» на вашем хост-компьютере:

33.33.33.10    your-domain.dev
0 голосов
/ 26 февраля 2015

Ответ выше потребует от вас повторять шаги 2 и 3 каждый раз, когда вы уничтожаете коробку.Я бы посоветовал вам использовать Chef для достижения своей цели.Смотрите пример ниже:

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|

    config.vm.box       = "precise64"
    config.vm.box_url   = "http://files.vagrantup.com/precise64.box"

    config.vm.network :forwarded_port, guest: 80, host: 8080
    config.vm.network :forwarded_port, guest: 443, host: 443

    config.vm.network "private_network", ip: "192.168.33.10"

    config.vm.provision :chef_solo do |chef|

        chef.cookbooks_path = "/path/to/your/cookbooks"

        # Install PHP
        chef.add_recipe "php"
        chef.add_recipe "php::module_mysql"

        # Setup Apache
        chef.add_recipe "apache2"
        chef.add_recipe "apache2::mod_php5"

        chef.json = { :apache => { :default_site_enabled => true } }

    end

end
...