wiki:tips:httpslogin
Различия
Показаны различия между двумя версиями страницы.
| wiki:tips:httpslogin [2024/08/09 01:59] – создано vladpolskiy | wiki:tips:httpslogin [2024/08/09 04:01] (текущий) – vladpolskiy | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ======Принудительный вход через HTTPS====== | ======Принудительный вход через HTTPS====== | ||
| + | =====Плагины===== | ||
| + | ====forcessllogin==== | ||
| + | См. https:// | ||
| + | =====Апачи===== | ||
| + | Используя mod_rewrite Apache, можно принудительно использовать HTTPS для входа в DokuWiki, тем самым предотвращая передачу паролей в открытом виде. | ||
| + | |||
| + | Вам также может понадобиться, | ||
| + | |||
| + | <code apache .htaccess> | ||
| + | RewriteCond %{HTTPS} !on | ||
| + | RewriteRule (.*) https:// | ||
| + | </ | ||
| + | |||
| + | Если вы хотите принудительно задать только какой-то определенный URL , сначала прочтите статью [[wiki: | ||
| + | |||
| + | Перенаправление на защищенное соединение, | ||
| + | |||
| + | FIXME Остальная часть параграфа обрабатывает только запросы с ''? | ||
| + | Смотрите обсуждение для решения. | ||
| + | |||
| + | Далее предполагается, | ||
| + | |||
| + | Поскольку вам необходимо настроить куки через HTTPS для работы на HTTP, вам необходимо сначала отключить опцию securecookie . Затем приступайте к настройке перенаправления в вашем '' | ||
| + | |||
| + | <code apache> | ||
| + | # Переключиться на безопасный режим при входе в систему, | ||
| + | RewriteEngine On | ||
| + | RewriteCond %{HTTPS} !on | ||
| + | RewriteCond %{QUERY_STRING} do=(log|profile|admin) | ||
| + | RewriteRule ^(.*) https:// | ||
| + | |||
| + | # Изменить обратно на небезопасный режим при показе действия | ||
| + | RewriteCond %{HTTPS} on | ||
| + | RewriteCond %{QUERY_STRING} !do=(log|profile|admin) | ||
| + | RewriteCond %{REQUEST_METHOD} GET | ||
| + | RewriteRule ^(.*) http:// | ||
| + | </ | ||
| + | |||
| + | Возможно, | ||
| + | |||
| + | Примечания: | ||
| + | |||
| + | * выше переключает обратно на не-SSL только на действии show. Это означает, | ||
| + | * если у вас есть другие правила переписывания, | ||
| + | * Если каталог установки DokuWiki не является корневым каталогом (например, | ||
| + | |||
| + | ====защищенный cookie==== | ||
| + | |||
| + | **Обратите внимание**: | ||
| + | |||
| + | ====nginx==== | ||
| + | |||
| + | Такая настройка также возможна в nginx, но с небольшой доработкой fastcgi_params. | ||
| + | |||
| + | Во-первых, | ||
| + | |||
| + | <code nginx> | ||
| + | # Протестировано с nginx 0.8.5 | ||
| + | # В http-контексте вашей конфигурации nginx | ||
| + | map $scheme $php_https { default off; https on; } | ||
| + | |||
| + | server { | ||
| + | server_name wiki.host.org | ||
| + | root / | ||
| + | index doku.php; | ||
| + | listen 80; | ||
| + | #Enforce https for logins, admin | ||
| + | if ($args ~* do=(log|admin|profile)) { | ||
| + | rewrite ^ https:// | ||
| + | } | ||
| + | include dokuwiki.conf; | ||
| + | } | ||
| + | |||
| + | server { | ||
| + | server_name wiki.host.org; | ||
| + | root / | ||
| + | index doku.php; | ||
| + | listen 443 ssl; | ||
| + | keepalive_requests | ||
| + | keepalive_timeout | ||
| + | ssl_certificate | ||
| + | ssl_certificate_key | ||
| + | #switch back to plain http for normal view | ||
| + | |||
| + | if ($args ~* (do=show|^$)){ | ||
| + | rewrite ^ http:// | ||
| + | } | ||
| + | include dokuwiki.conf; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | В '' | ||
| + | |||
| + | <code nginx> | ||
| + | fastcgi_param HTTPS $php_https; | ||
| + | </ | ||
| + | |||
| + | в ваш fastcgi_params. Этот параметр и '' | ||
| + | |||
| + | Как и в случае с Apache, вам необходимо отключить Securecookie в вашем '' | ||
| + | |||
| + | =====HTTPS на основе PHP===== | ||
| + | Ниже полезно, | ||
| + | |||
| + | <code php> | ||
| + | <?php | ||
| + | if ($_SERVER[HTTPS]!=" | ||
| + | // | ||
| + | // Функция ' | ||
| + | // Поэтому постарайтесь использовать не getenv(' | ||
| + | $strURIName= $_SERVER[' | ||
| + | header (" | ||
| + | // Если это не работает для вас и вам нужно устранить неполадки в вашем PHP-коде, | ||
| + | // раскомментируйте ниже, чтобы узнать о ваших конкретных переменных сервера | ||
| + | /* | ||
| + | echo "< | ||
| + | reset($_SERVER); | ||
| + | while (list ($key, $val) = each ($_SERVER)) { | ||
| + | print $key . " = " . $val . "< | ||
| + | } | ||
| + | */ | ||
| + | } | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | Спасибо. Это спасло мой день! | ||
| + | |||
| + | [[https:// | ||
wiki/tips/httpslogin.1723157968.txt.gz · Последнее изменение: — vladpolskiy
