質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

Q&A

解決済

5回答

2381閲覧

SSL化でwwwなしのリダイレクトの件で

pro88

総合スコア17

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

0グッド

0クリップ

投稿2018/08/24 19:04

編集2018/08/25 06:40

さくらのVPS CentOS 6.10
SSL対応でLetsEncryptを自力でインストールして試しましたが
バーチャルホストの設定をしないことが原因だったのか、上手く行かなかったために
SSLボックスでLetsEncryptの証明書をインストールすることでSSL化は実装できました。
ところがwwwなしのリダイレクトが上手く行かずに参っております。
色々と試しましたが結果以下の状態でほぼ良いところまで来ているのですが
※バーチャルホストの設定をしていないのでhttpd.confに以下の書き方になっています。

<Directory "/var/www/html">

RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*) https://abc.com/$1 [R=301,L]

上記の書き方でいくつかのアクセスパターンの内ひとつのケースだけ上手く行きません。

abc.com ⇒ https://abc.com/ 301リダイレクトOK
http://abc.com/https://abc.com/ 301リダイレクトOK
www.abc.comhttps://abc.com/ 301リダイレクトOK
https://www.abc.com/https://www.abc.com/ のままで 「安全な接続ではありません」となる。要はリダイレクトされない。

最後のケースだけがhttpsの付いた状態でwwwから打つとリダイレクトされません。

要は、どのパターンからでもwwwなしの https://abc.com/ に統一して301リダイレクトしたいのですが
方法をご提示いただけませんでしょうか。
宜しくお願いいたします。

scsi様
編集・追加依頼の件ですが

abc.com のワイルドカード証明書かwww.abc.comの証明書は取得されてますか?

無料の証明書LetsEncryptのためにワイルドカードに対応していないようです。
そのためhttps://www.abc.com/にアクセスしたときに
「安全な接続ではありません」とブラウザに表示され、その下に
「この証明書は abc.com にだけ有効なものです。」と書かれております。
ワイルドカードに対応していない証明書ということになるので、
そもそもhttps://www.abc.com/をリダイレクトすることは出来ないのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

scsi

2018/08/24 19:48

abc.com のワイルドカード証明書かwww.abc.comの証明書は取得されてますか?
guest

回答5

0

%{HTTPS} offの時しかリダイレクトしてないので、https://~がリダイレクトされないのは当然です。
あと、例示には他人所有のドメイン名でなく、exampleドメインを使いましょう。

Apache

1RewriteEngine on 2RewriteCond %{HTTPS} off 3RewriteRule ^(.*) https://example.com/$1 [R=301,L] 4RewriteCond %{HTTP_HOST} !^example.com$ [NC] 5RewriteRule ^(.*) https://example.com/$1 [R=301,L]

投稿2018/08/24 22:55

otn

総合スコア84421

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pro88

2018/08/25 06:54

otn様 > あと、例示には他人所有のドメイン名でなく、exampleドメインを使いましょう。 まず上記の件ですが、存在しないドメインと思いこんでおりましたことで以後気を付けます。 ご指摘ありがとうございました。 それと本題ですが、こちらも私の知識不足でした。ただご回答いただいた記述で 試したのですが、結果は同じで https://www.example.com/ にアクセスすると リダイレクトされませんでした。 明け方に編集・追加依頼があり、ワイルドカード証明書は取得されましたかと尋ねられました。 無料の証明書LetsEncryptだったために、https://www.example.com/ へのアクセスが リダイレクトされない状態になっているのでしょうか? ご意見をいただければ助かります。 宜しくお願いいたします。
otn

2018/08/25 08:54

> 結果は同じで タイプミスなどがあるのかと思います。 > リダイレクトされない状態になっているのでしょうか? 証明書とリダイレクトは無関係です。
pro88

2018/08/25 12:38

お世話になります。 何回も以下を書き直し試しましたが、やはり結果は同じでした。 もちろんドメイン部分は実際のものに書き直してということです。 RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*) https://example.com/$1 [R=301,L] RewriteCond %{HTTP_HOST} !^example.com$ [NC] RewriteRule ^(.*) https://example.com/$1 [R=301,L] 結果、他は正しくリダイレクトされますが https://www.example.com/https://example.com/ にリダイレクトする動作だけが実装されません。 やはり、Let's Encryptのワイルドカード非対応の証明書では https://www.example.com/ にアクセスした時点で、証明書なしと判断されてリダイレクトの処理の前にはじかれるのではないでしょうか? お考えを今一度いただければと思います。 お手数ですが宜しくお願いいたします。
otn

2018/08/25 13:10

上記で合ってますので、書き換えている点をよく確認してください。 もしくは、たまに有るのが、違う箇所に書いてある記述が競合して上記通りになっていないか。それについてはこちらでは分かりません。
pro88

2018/08/26 13:42

度々ありがとうございます。 otnさんのRewriteの記述で間違いないことは検証できております。 現状でもその記述のままであります。 ただ、やはり挙動は同じで https://www.example.com/ に直打ちでアクセスするとリダイレクトされずに弾かれます。 その弾かれたページ上の「安全な接続ではありません」という文言の最下部にある 「例外を追加...」から開いたダイアログの「セキュリティ例外を承認」を押した時点で https://www.example.com/ から https://example.com/ へとリダイレクトされました。 因みにブラウザはFirefoxです。 これでRewriteの書き方は間違っていないことと、Let's Encryptのワイルドカード非対応証明書では、問題の挙動は解決できないことが証明されました。 今回のことは非常に勉強になりました。 ただ自己解決の欄にも記載しますが、有料ではありますが最安値といっていい証明書を見つけることが出来ました。 ワイルドカード対応ではありませんが、コモンネーム(ドメイン)を2つ登録出来るようなので、私が求める挙動が実装できるようになります。 この度は本当にありがとうございました。 また何か問題にぶつかりました時は、お知恵をお貸しいただければと思います。 今後とも宜しくお願いいたします。
otn

2018/08/26 13:54 編集

状況を正しく把握できていませんでした。失礼しました。 リダイレクトされずに元のURLから変化無いという意味じゃなくて、証明書のところで引っかかっていたんですね。
pro88

2018/08/26 14:10

いえいえ、とんでもないです。 私の説明が及んでなかったことが原因です。 本当に大変勉強になりました。 ありがとうございました。
scsi

2018/08/26 16:11

Letsencryptでも両ドメイン対応の証明書は取れますよ。
pro88

2018/08/26 17:09

今年3月にリリースされたワイルドカード対応の証明書ではなく、 wwwあり、wwwなしの両方ということでしょうか? もしそうであれば教えていただけますでしょうか。 もし、3月にリリースされたワイルドカード対応の証明書のことで あるようでしたら、私の環境では無理でしたので結構ですが。
scsi

2018/08/27 03:13

調べればすぐに見つかるはずですので聞いてばかりではなく調べてみては如何でしょうか。
pro88

2018/08/27 04:06

なるほど、確かにありました。 ありがとうございます。
guest

0

はい、その証明書では出来ませんね。

投稿2018/08/25 07:41

編集2018/08/25 07:44
scsi

総合スコア2840

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pro88

2018/08/25 07:45

ワイルドカード証明書を取得すればリダイレクトは可能でしょうか?
scsi

2018/08/25 07:55

ワイルドカード証明書か両ドメインに対応した証明書を用意すればいいかと思います。
guest

0

問題点を単純に捉えましょう。

最終的にやりたいことは、「リダイレクト」+「SSL」ということですね。
一度に両方をやろうとするのではなく、まずは「リダイレクト」の設定だけを行い、その設定が正しく出来ているかを確認しましょう。

bash

1<Directory "/var/www/html"> 2 ServerName example.com↲ 3 DocumentRoot /var/www/html/example.com↲ 4 RewriteEngine on↲ 5 RewriteCond %{HTTP_HOST} !^example.com↲ 6 RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] 7</Directory>

www.example.com へのアクセスが、example.com になるかどうか。
test.example.com へのアクセスが、example.com になるかどうか。

「うまくいかない」場合は、/var/log/httpd/error_log を確認。

ちなみに、設定に文法上のエラーがないかは、以下のコマンドで確認できる。

bash

1httpd -t

 ここまでできたら、

certbot-auto を利用して、SSLにすることは、対話形式で応答するだけで、半自動で設定可能です。

certbot-auto をダウンロードして、実行権限を付与。

bash

1cd ~ 2wget https://dl.eff.org/certbot-auto 3chmod a+x certbot-auto

certbot-autoを実行。

bash

1./certbot-auto

SSLサーバ証明書の設定

Apacheとnginxのどちらを使うか質問される場合。Apacheしかない場合は多分聞かれない。

bash

1How would you like to authenticate and install certificates? 2------------------------------------------------------------------------------- 31: Apache Web Server plugin - Beta (apache) 42: Nginx Web Server plugin - Alpha (nginx) 5------------------------------------------------------------------------------- 6Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1

メールアドレスを入力します。

bash

1Enter email address (used for urgent renewal and security notices) (Enter 'c' to 2cancel): xxxxxxxxx@xxxxxx.com

規約に同意するよう求められます。「A」を入力。

bash

1Please read the Terms of Service at 2https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree 3in order to register with the ACME server at 4https://acme-v01.api.letsencrypt.org/directory 5------------------------------------------------------------------------------- 6(A)gree/(C)ancel: A

メールアドレスを電子フロンティア財団に共有するか質問されます。
財団からメールが届くらしいのですが、不要なので「N」を入力。

bash

1------------------------------------------------------------------------------- 2Would you be willing to share your email address with the Electronic Frontier 3Foundation, a founding partner of the Let's Encrypt project and the non-profit 4organization that develops Certbot? We'd like to send you email about EFF and 5our work to encrypt the web, protect its users and defend digital rights. 6------------------------------------------------------------------------------- 7(Y)es/(N)o: N

Webサーバに複数のサイトが同居している場合、どのサイトをHTTPS化するか質問されます。
対象の番号を入力。一つしかない場合は、多分聞かれない。

bash

1Which names would you like to activate HTTPS for? 2------------------------------------------------------------------------------- 31: example.com 42: www.example.com 5------------------------------------------------------------------------------- 6Select the appropriate numbers separated by commas and/or spaces, or leave input 7blank to select all options shown (Enter 'c' to cancel): 1

少し待つと、自動で証明書の取得が進みます。

HTTPSへのリダイレクト設定をするか指定します。今回のばあい、リダイレクトするので、2で応答する。

bash

1Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. 2------------------------------------------------------------------------------- 31: No redirect - Make no further changes to the webserver configuration. 42: Redirect - Make all requests redirect to secure HTTPS access. Choose this for 5new sites, or if you're confident your site works on HTTPS. You can undo this 6change by editing your web server's configuration. 7------------------------------------------------------------------------------- 8Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

「Congratulations!」と表示されたら、設定完了です。

投稿2018/08/25 09:15

編集2018/08/25 10:05
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pro88

2018/08/25 12:23

お世話になります。 詳細で分かりやすい説明をしていただきましてありがとうございます。 ただ私の質問の書き方がいまひとつ経緯等の説明が無かったために、現状がどのような状態にあるかが伝わっていなかったのだと思います。 既に何年も公開しているサイトでありまして、SSL化していない状態で運営しており、wwwなしのリダイレクトは出来ておりました。 その上でSSL化に対応しようと考えまして、Let's Encryptの証明書も取得済みでサーバにアップしております。 そこで今回の問題にぶつかっているところでした。 本日いただいた回答やその後も調べて、色々なRewriteの書き方を試しましたが、結局のところ現状のLet's Encryptのワイルドカード非対応の証明書では、https://www.example.com/https://example.com/ にリダイレクトすることは出来ない可能性が高いと判断しました。 詳細なとても分かりやすいcertbot-autoの導入説明をしていただきまして大変感謝しております。 また、何か問題にぶつかりました時は是非お知恵をいただければと思いました。 本当にありがとうございました。
pro88

2018/08/25 15:53 編集

はい、ワイルドカード対応の証明書であれば可能です。 ワイルドカード非対応の証明書では、やはりリダイレクトの処理前にはじかれます。 https://www.example.com/ でアクセスした時点で別ドメインの判定をされるのでリダイレクトの処理を出来ないようです。 色々勉強になりました。ワイルドカード対応の証明書を取得しようと思います。 ご回答ありがとうございました。
pro88

2018/08/26 13:15 編集

度々ありがとうございます。 実装したいのは、https://example.com/ にリダイレクトしたいのです。 で現状のワイルドカード非対応の状態で以下はリダイレクト可能です。 ※いずれもアドレスを直打ちです http://example.com/https://example.com/ 可能です http://www.example.com/https://example.com/ 可能です example.comhttps://example.com/ 可能です www.example.comhttps://example.com/ 可能です ただ以下のように直打ちするとリダイレクトされません https://www.example.com/ ⇒ リダイレクトされません。 現状では example.com このコモンネーム(ドメイン)のみに証明書が発行されているので証明書の発行されていない www.example.com に対して直打ちで https://www.example.com/ にアクセスすると弾かれます。 これは無料証明書Let's Encryptワイルドカード非対応のものだから、このような挙動になってしまうようです。 今回かなり色々と調べてみましたところ、今年の三月からLet's Encryptもワイルドカード対応の証明書をリリースしたようです。 ただ私の環境では、導入できませんでした。 しかしながら、有料ではありますが最安値といっていい証明書を見つけることが出来ました。 ワイルドカード対応ではありませんが、コモンネーム(ドメイン)を2つ登録出来るようなので、私が求める挙動が実装できるようになります。 自己解決の欄に記載するつもりでおります。 大変勉強になりました。ありがとうございました。
退会済みユーザー

退会済みユーザー

2018/08/26 13:52

一体何を言っているのでしょう? 私が管理しているサーバーでは、ワイルドカード証明書でなくても、意図するようにwwwなしのドメインへのリダイレクトができています。正しく回答を読み取ってほしいと思います。
pro88

2018/08/26 14:08

https://jlamp.net で確認しました。 ブラウザのアドレスバー部分に以下を直打ちしてみてください。 https://www.jlamp.net Google Chrome https://www.jlamp.nethttps://jlamp.net リダイレクト可能でした Firefox https://www.jlamp.net ⇒ 安全な接続ではありません リダイレクト不可 IE https://www.jlamp.net ⇒ この Web サイトのセキュリティ証明書には問題があります。 リダイレクト不可 以上の結果になります。 複数のブラウザで検証すると結果が違ってきます。 試してみてくださいませ。
退会済みユーザー

退会済みユーザー

2018/08/26 14:43

なるほど。ブラウザによって動きが異なることを確認しました。 こちらの確認不足で、振り回してしまい、申し訳ないです。
pro88

2018/08/26 16:03

いえいえ、とんでもないです。 今回の問題で色々な角度から調べ直すことが出来ましたことは、皆様の回答があったからです。 本当にいい勉強になりました。 こちらこそありがとうございました。
guest

0

ベストアンサー

こんな漢字で、

Apache

1RewriteEngine on 2RewriteCond %{HTTP_HOST} ^www.example.com$ 3RewriteRule ^(.*) https://example.com/$1 [R=301,L] 4RewriteCond %{HTTPS} off 5RewriteRule ^(.*) https://example.com/$1 [R=301,L]

追記
ブラウザがhttps://www.example.comを開こうとした時点でSSL証明書のエラー止まっています。
これはリダイレクトが処理される前に発生するので、サーバー側の設定では回避できません。
Let's Encryptでは複数ドメインに対応した証明書を発行できるので、wwwなしとwww付の両方に対応した証明書を発行しましょう。

投稿2018/08/25 08:07

編集2018/08/25 14:10
hichon

総合スコア5737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pro88

2018/08/25 08:37

回答ありがとうございます。 いただいた記述で何となくいけそうな気がしたのですが、試したところやはり同じ結果で https://example.com/ へのアクセスだけがうまくリダイレクトされませんでした。 ブラウザはFirefoxですが、表示された内容は前回同様以下です。 ※ドメインは example.com に書き換えております。 ----- ここから ----- 安全な接続ではありません www.example.com の所有者によるウェブサイトの設定が不適切です。あなたの情報が盗まれることを防ぐため、このウェブサイトへの接続は確立されません。 www.example.com は不正なセキュリティ証明書を使用しています。 この証明書は example.com にだけ有効なものです。 エラーコード: SSL_ERROR_BAD_CERT_DOMAIN ----- ここまで ----- 如何でしょうか。度々申し訳ありません。
hichon

2018/08/25 14:05

追記しました。
pro88

2018/08/25 15:16

はい、調べている間にワイルドカードに非対応が原因であることがわかりました。 Let's Encrypt若しくは他でワイルドカード対応の証明書を取得して対応しようと考えました。 ご回答ありがとうございました。
pro88

2018/09/01 14:37

お世話になります。 結局のところLet's Encryptのwwwなし、wwwありのドメインで証明書を発行することでリダイレクトも実装できたのですが、当初から > Let's Encryptでは複数ドメインに対応した証明書を発行できるので、wwwなしとwww付の両方に対応した証明書を発行しましょう。 と適切な回答をいただいておりましたのに、ワイルドカード対応にとらわれ過ぎてしまい、かなり遠回りをしておりました。 その節は申し訳ありませんでした。 また何かの時は、お力をお貸しいただければと思います。 ありがとうございました。
guest

0

私の認識不足で、現在利用しているLet's Encryptのワイルドカード非対応証明書では、今回の問題は解決出来ないことが分かりました。
Let's Encryptでも今年の3月からワイルドカード対応の証明書をリリースしたことが分かりましたので試してみましたが、私の環境下では設置できませんでした。

因みに現状で利用しておりましたワイルドカード非対応のLet's Encryptは以下にて発行しておりました。
SSLボックス
https://www.sslbox.jp/

結局のところ、有料ではありますが最安値と思われるSSL証明書を見つけることが出来ました。
エンジョイSSL
https://www.e-ssldirect.com/

こちらで申し込もうと考えた内容のものは、年間1000円を切る価格でワイルドカードには非対応ですが、
コモンネーム(ドメイン)を2つ登録出来るために、今回の問題を解決できる挙動をしてくれます。

これで数日間悩んだ問題が解決することが出来ました。
色んな方からの回答をいただいたことで、色んなヒントをいただけたことで解決にこぎつけました。

回答をいただけと方々に感謝いたします。
本当にありがとうございました。

投稿2018/08/26 14:33

pro88

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問