Доступ к apache в изолированной песочнице с использованием ssl (переадресация портов)
Я создал веб-сервер бродяг/виртуальных веб-сайтов в качестве изолированной программной среды разработки и настроил apache в VM для ssl (на порту по умолчанию 443 с самозаверяющим сертификатом). Я тестировал страницы на самой виртуальной машине с помощью curl
curl -v -k https://mysite.mydomain.com/testSearch/results?postcode=WN8+0BA
и, похоже, он работает довольно успешно, поэтому я уверен, что apache правильно настроен и работает в виртуальной машине.
Однако, когда я пытаюсь получить доступ к виртуальной машине из браузеров хоста по https, я не могу этого сделать.
Я добавил
config.vm.forward_port "https", 443, 8443
в мой брандмауэр, но пытаюсь получить доступ к 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 не говорит мне ничего более.
Я не получаю ничего в журналах доступа или ошибок на VM apache, поэтому я подозреваю, что бродяга не пересылает ssl вообще.
- гостевая ОС VM: centos56x64
- Хост: Windows 7 64-разрядный
- JRuby: 1.6.3 (ruby-1.8.7-p330) (2011-07-07 965162f) (Java-сервер HotSpot 64-Bit Server 1.6.0_24) [Windows 7-amd64-java]
- Бродяга: 0.7.8
- VirtualBox: 4.0.12
Любая помощь будет с благодарностью принята.
Ответы
Ответ 1
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) Выйдите из ВМ и настройте файл "хосты" на хост-машине:
33.33.33.10 your-domain.dev
Ответ 2
Ответ выше должен требовать от вас повторять шаги 2 и 3 каждый раз, когда вы уничтожаете ящик. Я бы посоветовал вам использовать шеф-повара для достижения своей цели. См. Пример ниже:
# -*- 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