zh:tips:httpslogin
no way to compare when less than two revisions
差别
这里会显示出您选择的修订版和当前版本之间的差别。
— | zh:tips:httpslogin [2021-05-12 04:46] (当前版本) – 创建 hfl | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== 强制通过 HTTPS 登录 ====== | ||
+ | |||
+ | ===== 插件 ====== | ||
+ | |||
+ | ==== forcessllogin 插件 ==== | ||
+ | 查看 https:// | ||
+ | |||
+ | =====Apache===== | ||
+ | 使用 Apache 的 '' | ||
+ | |||
+ | 您可能需要全站(而不仅仅是登录)使用 HTTPS 协议。如果是这样,在 DokuWiki 根目录创建 '' | ||
+ | RewriteCond %{HTTPS} !on | ||
+ | RewriteRule (.*) https:// | ||
+ | </ | ||
+ | |||
+ | 如果您只需要某些特定 URL 使用 HTTPS,参见 [[: | ||
+ | |||
+ | 基于安全连接的重定向特定页面(例如登录页面)需要根据 URL 对其进行识别。某些页面(例如,“拒绝访问”页面仅在新版软件出现,2014-05-05 " | ||
+ | |||
+ | FIXME The rest of the paragraph only handles requests with a ''? | ||
+ | 参见解决方案的讨论部分。 | ||
+ | |||
+ | 以下内容假设您已经为维基设置了 HTTPS 支持,并且可以通过 HTTP 和 HTTPS 在同一地址上使用它。出于性能原因,只有登录和配置文件更新应强制使用 HTTPS,而所有“常规” 维基操作将继续在 HTTP 上运行。 | ||
+ | |||
+ | 由于您需要通过 HTTPS 设置 cookie 在 HTTP 应用,所以您应该先关闭 [[config: | ||
+ | |||
+ | < | ||
+ | # Switch to secure on login, profile and admin actions | ||
+ | RewriteEngine On | ||
+ | RewriteCond %{HTTPS} !on | ||
+ | RewriteCond %{QUERY_STRING} do=(log|profile|admin) | ||
+ | RewriteRule ^(.*) https:// | ||
+ | |||
+ | # Change back to non-secure on show action | ||
+ | RewriteCond %{HTTPS} on | ||
+ | RewriteCond %{QUERY_STRING} !do=(log|profile|admin) | ||
+ | RewriteCond %{REQUEST_METHOD} GET | ||
+ | RewriteRule ^(.*) http:// | ||
+ | </ | ||
+ | |||
+ | 您可能想要将 '' | ||
+ | |||
+ | 注意: | ||
+ | * the above switches back to non-SSL on the show action only. This means switchback might not occur immediately after login, but ensures there will be no "mixed content" | ||
+ | |||
+ | * if you have other rewrite rules, such as [[: | ||
+ | |||
+ | * if your DokuWiki' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====securecookie==== | ||
+ | **Please note:** You need to disable the " | ||
+ | |||
+ | ===== nginx===== | ||
+ | This setup is also possible in nginx but with a minor tweak to your fastcgi_params. | ||
+ | |||
+ | First, you need to have separate server instances, for '' | ||
+ | |||
+ | < | ||
+ | # Tested with nginx 0.8.5 | ||
+ | # In http context of your nginx configuration | ||
+ | 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; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | In '' | ||
+ | |||
+ | fastcgi_param HTTPS $php_https; | ||
+ | |||
+ | to your your fastcgi_params. This parameter and the '' | ||
+ | |||
+ | Like with apache, you need to disable [[# | ||
+ | |||
+ | |||
+ | ===== 基于 HTTPS 的 php ===== | ||
+ | Below is useful if you wish to force https connection ALWAYS (not just for login), and wish not to rely on Apache or NGINX htaccess or other server specific directives. | ||
+ | |||
+ | <code php> | ||
+ | <?php | ||
+ | if ($_SERVER[HTTPS]!=" | ||
+ | // | ||
+ | // The function ' | ||
+ | // So, try to don't use getenv(' | ||
+ | $strURIName= $_SERVER[' | ||
+ | header (" | ||
+ | // If it doesn' | ||
+ | // uncomment below to find out about your particular server variables | ||
+ | /* | ||
+ | echo "< | ||
+ | reset($_SERVER); | ||
+ | while (list ($key, $val) = each ($_SERVER)) { | ||
+ | print $key . " = " . $val . "< | ||
+ | } | ||
+ | */ | ||
+ | } | ||
+ | |||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | Thanks.. That saved my day! | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== 讨论 ===== | ||
+ | ==== [[: | ||
+ | Isn't [[: | ||
+ | |||
+ | ==== Update for 2014-05-05 " | ||
+ | Are these instructions up to date for 2014-05-05 " | ||
+ | |||
+ | ==== 17 Jul 14 - Access Denied SSL Login fix ==== | ||
+ | I have created the solution to the “access denied” pages that enables rewrite rules to redirect the user to an SSL login page. | ||
+ | This fix was an edit to the source code that redirects the user to the same page with the ‘do=login’ query string this enables the rewrite rules to take effect and redirect to an SSL login page, once the user logs in they will be presented with the page they tried to access. This fix is on my websites [[http:// | ||
+ | |||
+ | ==== 25 Nov 15 - wrong protocol service or infinite loop ==== | ||
+ | |||
+ | I try to CASsify my **Dokuwiki** with **phpCAS**. My CAS server does not allow http services (which I could change but it is not my purpose).\\ | ||
+ | So I did install the plugin authplaincas with success and the phpCAS lib too. Evrything is OK except one thing : '' | ||
+ | https:// | ||
+ | First I was thinking **phpCAS** was the problem then it was **Dokuwiki** and then again **phpCAS** but now I think it is **DokuWiki** which report the wrong protocol service. | ||
+ | I tried different solution like rewrite engine into '' | ||
+ | For more information, | ||
+ | I think the problem is HTTPS protocol information is not transmit to my backend which host my DokuWiki or when I get infinite loop I think my cookie is not preserve. | ||
+ | How can I fix it or debug it ? Help will be very appreciate. | ||
+ | |||
+ | Regards,\\ | ||
+ | Guy CARRÉ\\ | ||
+ | | ||
+ | |||
+ | **EDIT** | ||
+ | I found what it was wrong and I post it here : | ||
+ | https:// | ||
+ | |||
+ | Good night ;-) | ||
+ | |||
+ | ==== 30 Nov 15 - do ==== | ||
+ | Over HTTP, not logged on a inexistent page if you try to view source(do=edit), | ||
+ | I suggest to switch to https on " | ||
+ | Also, I'm not sure that this configuration really **needs** secure cookie disabled, it needs it **enabled** to me. Actually, steal a cookie is as easy as steal a cleartext password. Ok, it doesn' | ||
+ | Switching back to http, you loose session : abilities to edit, config etc, what's wrong with this? Doing such an action puts you back to https, the cookie is send and you retrieve your session. Maybe some other actions need to switch to https then like media things, etc, I don't know.\\ | ||
+ | These are just suggestions, | ||
+ | |||
+ | ==== 16 Feb 2016 - Use TLS all the time ==== | ||
+ | |||
+ | We should amend this tip to recommend using TLS for all connections. | ||
+ | < | ||
+ | |||
+ | One step further would be to strongly recommend that TLS be configured by default. | ||
+ | |||
zh/tips/httpslogin.txt · 最后更改: 2021-05-12 04:46 由 hfl