ID非公開さん
2018/10/8 11:14
1回答
さくらのレンタルサーバ ライトとさくらのドメインを契約して知人間のPukiWikiを構築しようとしています.
さくらのレンタルサーバ ライトとさくらのドメインを契約して知人間のPukiWikiを構築しようとしています. やりたいことは「https接続のみ+Basic認証でPukiWikiを運用すること,http接続は拒否またはhttpsにリダイレクト」です. サーバーのディレクトリにPukiWikiを導入し,さらに取得したドメインに対してSNIで証明書を取得しSSL接続(httpsでのBasic認証付きアクセス)ができました. ただ,このままではhttpでもBasic認証が表示され,IDとパスを入力するとアクセスできてしまいます. そこで,httpは完全に拒否してしまうか,httpsのBasic認証画面にリダイレクトしたいです. これまでに試したことは下記です ・SSLRequireSSLを.htaccessに追記する →httpはBasic認証も表示されず拒否,しかしなぜかhttpsもBasic認証が表示される拒否.この原因がどうしてもわかりません. ・多くの方が試されている方法でhttpからhttpsにリダイレクト →例えば ttps://memo.furyutei.work/entry/20150410/1428674881 ttp://kayakuguri.github.io/blog/2017/10/10/sakura-ssl/ に記載されている情報を参考にしましたが,httpアクセス時でもリダイレクトはされずBasic認証が表示されてしまい,IDとパスを入力してログインしたあとにhttpsのページ(認証後の状態)にリダイレクトされました.Basic認証画面の前にhttpsのBasic認証画面にリダイレクトされないとセキュリティとして意味がなさそうなのでこのままでは問題ありです. 私はあまりここら辺の仕組みについて詳しくはなく,全て検索で出てくる情報をもとに試行錯誤をしていますが,この件がどうしても解決できませんでした.また,知識不足により根本的に勘違いしている可能性もございます. この件について解決法をご教示いただければ幸いです. 参考までに,現在の.htaccessを下記に示しております. このファイルは/home/ドメイン/www/PukiWiki/.htaccessに置いて試しています. ・httpを拒否したい目的 SSLRequireSSL <If "%{HTTP:X-SAKURA-FORWARDED-FOR} != ''"> AuthType Basic AuthName "Web access" AuthUserFile /home/ドメイン/www/PukiWiki/.htpasswd require valid-user </If> DirectoryIndex index.html index.htm index.shtml index.php index.cgi Options -Indexes ・httpsへリダイレクトする目的 <Files ~ "^\.ht"> deny from all </Files> <IfModule mod_rewrite.c> RewriteEngine On # --- SSLアクセスでない場合(${ENV:HTTPS} が 'on' でなく、且つ、%{HTTP:X-Sakura-Forwarded-For} が未設定の場合)には # https://%{SERVER_NAME}%{REQUEST_URI} へリダイレクト RewriteCond %{ENV:HTTPS} !^on$ RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$ RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] </IfModule> <If "%{HTTP:X-SAKURA-FORWARDED-FOR} != ''"> AuthUserFile /home/ドメイン/www/PukiWiki/.htpasswd AuthType Basic AuthName "Web access" Require valid-user </If> DirectoryIndex index.html index.htm index.shtml index.php index.cgi Options -Indexes
ご指摘の通り常時SSLでかつBasic認証をかける,という内容です. 解決しましたのでご報告いたします. RewriteEngine On RewriteCond %{ENV:HTTPS} !^on$ RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$ RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] で確かにhttp→httpsへのリダイレクトはできます.但し,このままBasic認証を.htaccessに追記すると httpでアクセス→httpでBasic認証画面→ログイン→httpsへ転送される→httpsでBasic認証画面 のように2回認証画面が出てしまいます.この点は下記で報告されています. ttp://kayakuguri.github.io/blog/2017/10/10/sakura-ssl/ こちらのブログではその後Basic認証に関する記述部にIf文をつけ <If "%{HTTP:X-SAKURA-FORWARDED-FOR} != ''"> とすればよいとありますが,私の環境ではうまくいきませんでした. そこで <If "%{HTTP:X-FORWARDED-PROTO} == 'https'"> を使うとhttpでのBasic認証画面をスキップできました.
ホームページ作成 | インターネットサービス・97閲覧・500