Назад | Перейти на главную страницу

SSL: две копии всего… делать это очень неправильно

это может быть ТАК вопрос, но это звучит как обслуживающий ...

Всякий раз, когда я настраиваю сайт, использующий SSL (не сертификат и сам сервер, а просто загрузка файлов), у меня всегда получается одна копия моего сайта в битах HTTP, а другая копия в части HTTPS с пересылкой заголовки, отправляющие пользователя вперед и назад. Это также приводит к созданию двух копий, что смешно поддерживать. Это заставляет меня думать, что я делаю это неправильно, отсюда и этот пост.

Я понимаю, что SSL "останавливает плохих парней" (или, по крайней мере, некоторых замедляет), я знаю, что на хосте есть отдельные части для SSL и не SSL, но может ли кто-нибудь немного показать мне веревки? или порекомендовать какую-нибудь статью в Интернете?

... большие слезы нубов ...

большое спасибо

редактировать: Гимель сказал, что подробности будут хорошо ...

Гм, LAMP на общем хосте, с общим SSL-сертификатом, в настоящее время борется с Zencart, но я бы хотел получить более широкий совет, к которому у меня нет доступа к командной строке, только FTP и что-то еще (unix немного пугает) .. .. это то, что вы имели в виду?

Предполагая, что вы используете apache vhosting, это так же просто, как установить DocumentRoot в одно и то же место для обоих. Чтобы использовать символические ссылки (как в Ответ Дэна Си) убедитесь, что у вас есть

Options +FollowSymLinks

Задайте его в файле httpdocs / .htaccess или в главном файле httpd.conf в зависимости от ситуации (файлы .htaccess ищутся и обрабатываются при каждой загрузке страницы в этом каталоге, поэтому нет необходимости перезапускать apache, однако они медленнее, чем реализация того же код в httpd.conf, поскольку этот файл обрабатывается только при запуске сервера).

Вот httpd.include для обслуживания данных HTTPS из того же места, что и HTTP:

<VirtualHost *:80>
        ServerName   test.com
        ServerAlias  www.test.com
        UseCanonicalName Off
        DocumentRoot /var/www/vhosts/test.com/httpdocs
        CustomLog  /var/www/vhosts/test.com/logs/access_log common
        ErrorLog   /var/www/vhosts/test.com/logs/error_log
        <IfModule mod_ssl.c>
                SSLEngine off
        </IfModule>
        Include /var/www/vhosts/test.com/conf/vhost.conf
</VirtualHost>

<VirtualHost *:443>
        ServerName   test.com
        ServerAlias  www.test.com
        UseCanonicalName Off
        DocumentRoot /var/www/vhosts/test.com/httpdocs
        CustomLog  /var/www/vhosts/test.com/logs/access_log common
        ErrorLog   /var/www/vhosts/test.com/logs/error_log
        <IfModule mod_ssl.c>
                SSLEngine on
                SSLVerifyClient none
                # example ssl certs
                SSLCertificateFile /usr/local/apache/certs/my.ca.pem
                SSLCertificateKeyFile /usr/local/apache/certs/my.server.key.pem
        </IfModule>
        Include /var/www/vhosts/test.com/conf/vhost_ssl.conf
</VirtualHost>

Полезные ссылки от Пошаговая инструкция О'Рейли: настройка SSL под Apache и Страница SSL Apache (подробный!)

Редактировать:

У вас должна быть возможность получить доступ к файлу conf / httpd.include через FTP (он может находиться в другом каталоге, но он будет в подкаталоге vhost /var/www/vhosts/test.com/ или аналогичном - вы можете найти каталог vhost в вашем основном httpd.conf).

Вы также должны иметь доступ к файлам .htaccess - они являются скрытыми файлами Linux, поэтому вам может потребоваться проверить документацию вашего FTP-клиента. В качестве альтернативы попробуйте создать файл .htaccess в каталоге httpdocs / вашего виртуального хоста - если вы не можете, файл уже может присутствовать.

Последний вздох: обратитесь к своему хостинг-провайдеру!

Я обычно храню документы следующим образом:

html      (HTTP resources)
html_ssl  (HTTPS resources)

Если содержание для каждого не суждено быть одинаковым, то обычно я буду символически связывать один с другим.

ln -s html_ssl html

Тогда вам нужно только обновить документы в html_ssl.

В качестве альтернативы вы можете указать оба DocumentRoot директивы в то же место. Но это немного менее интуитивно.

Существуют отдельные настройки для HTTP и HTTPS, но они обслуживаются из одного каталога. Если запрос поступает по http, то ответ передается по http, и наоборот https. Чтобы заблокировать отправку документа через http, вам необходимо настроить виртуальный хост с отдельным DocumentRoot и поместить его туда.