Получение SSL для работы с Apache / Passenger на Mac OS с «Snow Leopard» - PullRequest
0 голосов
/ 04 января 2011

У меня есть Mac OS с Snow Snow Leopard v10.6.5, и я разрабатываю приложение Ruby on Rails 3 с использованием Passenger Preference Pane v 1.3.

Чтобы продолжить разработку моего приложения, мне нужна поддержка SSL , но у меня похожая проблема .

Шаги, которые я выполнил, взяты из стандартной установки apache osx:

  1. Установить панель предпочтений пассажира и пассажира.
  2. Добавить мое приложение Ruby on Rails (работает)
  3. Создайте мои ca.key, server.crt и server.key как , подробно описано на веб-сайте Apple ...

... но на третьем шаге мне пришлось остановиться по следующим причинам при редактировании файла /private/etc/apache2/httpd.conf (дополнительную информацию см. На веб-сайте Apple):

1. Port 80 should be changed to #Port 80.

Я не нашел "Порт 80", но я думаю, что это не проблема, потому что, даже если он присутствует в коде, он закомментирован.

2. You will need to add the following just below where the Port directive was:

< IfModule mod_ssl.c>
    Listen 443
    Listen 80
< /IfModule>

Если я добавлю эти строки кода и перезапущу apache2, мое приложение перестанет работать.

3. [...] The two lines should now look like this:

LoadModule ssl_module libexec/httpd/libssl.so

AddModule mod_ssl.c

Так как код AddModule mod_ssl.c не существует (LoadModule готов к использованию), я попытался добавить его и перезапустить apache2, но мое приложение больше не работает.

4. Now find the “ServerName” directive and make sure it has 127.0.0.1 for it’s entry.

ServerName 127.0.0.1

Я не знаю, должен ли я войти в него, так как я использую Passenger. Тем не менее, в файле я нашел строку кода (уже прокомментированную) '#ServerName www.example.com:80'.

Что касается кода для Пассажира для сертификатов SSL, я полагаю, что он должен совпадать с проблемой , описанной выше .

Я думаю, что это связано с тем, что руководство было написано очень давно. Итак, что мне делать, чтобы использовать SSL с apache2?

Просто чтобы прояснить ситуацию, я также включил код, связанный с Панелью предпочтений пассажиров ...

... / частный / и т.д. / apache2 / httpd.conf

   LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.2/ext/apache2/mod_passenger.so
   PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.2
   PassengerRuby /usr/local/bin/ruby

# Added by the Passenger preference pane
# Make sure to include the Passenger configuration (the LoadModule,
# PassengerRoot, and PassengerRuby directives) before this section.
<IfModule passenger_module>
  NameVirtualHost *:80
  <VirtualHost *:80>
    ServerName _default_
  </VirtualHost>
  Include /private/etc/apache2/passenger_pane_vhosts/*.conf
</IfModule>

... / частный / и т.д. / apache2 / passenger_pane_vhosts / subdomain.domain.com.vhost.conf

<VirtualHost *:443>

  ServerName subdomain.domain.com
  DocumentRoot "/Users/<my_user_name>/Sites/subdomain/public"
  RackEnv development
  <Directory "/Users/<my_user_name>/Sites/subdomain/public">
    Order allow,deny
    Allow from all
  </Directory>

  # SSL Configuration
  SSLEngine on
  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
  SSLOptions +FakeBasicAuth +ExportCertData +StdEnvVars +StrictRequire

  #Self Signed certificates
  SSLCertificateFile /private/etc/apache2/ssl/server.crt
  SSLCertificateKeyFile /private/etc/apache2/ssl/server.key
  SSLCertificateChainFile /private/etc/apache2/ssl/ca.crt

  SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0

</VirtualHost>

1 Ответ

0 голосов
/ 13 января 2011

Я просто столкнулся с той же проблемой, и это то, что я сделал, чтобы она заработала.

Следуйте тем же шагам, чтобы сгенерировать ключи (далее также упоминается удаление ключевой фразы. Я должен был сделать это для того, чтобы все работало).

Далее я сделал следующее, чтобы включить SSL на Apache:

В файле "/private/etc/apache2/httpd.conf" на моем Snow Leopard была строка:

# Include /private/etc/apache2/extra/httpd-manual.conf

Я просто удалил # и сохранил файл.

Затем отредактируйте файл (/private/etc/apache2/extra/httpd-manual.conf) и убедитесь, что

SSLCertificateFile
SSLCertificateKeyFile

указывает на правильные файлы ключей, которые вы создали.

Далее есть запись в том же файле (/private/etc/apache2/extra/httpd-manual.conf), которая начинается:

<VirtualHost _default_:443>

Мне пришлось закомментировать этот файл и все после него (или вы можете просто удалить его) до

</VirtualHost> 

запись. Эта запись конфликтует с моим сайтом.

Запись виртуального хоста у вас выглядит правильно, но для полноты я добавлю сюда свою.

Я только что изменил оригинальный файл Vhost, созданный программой Passenger PrefsPane для моего сайта:

<VirtualHost *:443 *:80>
  ServerName mysite.local
  DocumentRoot "/Users/username/mysite/public"
  RackEnv development
  <Directory "/Users/username/mysite/public">
    Order allow,deny
    Allow from all
  </Directory>
  SSLEngine on
  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
  SSLOptions +FakeBasicAuth +ExportCertData +StdEnvVars +StrictRequire
  SSLCertificateFile /etc/apache2/sslkey/server.crt
  SSLCertificateKeyFile /etc/apache2/sslkey/server.key
  SSLCertificateChainFile /etc/apache2/sslkey/ca.crt
  SetEnvIf User-Agent &quot;.*MSIE.*&quot; nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
</VirtualHost>

Затем перезапустите Apache, и все будет хорошо. : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...