さくらの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.com ⇒ https://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ページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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
総合スコア84421
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/25 06:54
2018/08/25 08:54
2018/08/25 12:38
2018/08/25 13:10
2018/08/26 13:42
2018/08/26 13:54 編集
2018/08/26 14:10
2018/08/26 16:11
2018/08/26 17:09
2018/08/27 03:13
2018/08/27 04:06
0
はい、その証明書では出来ませんね。
投稿2018/08/25 07:41
編集2018/08/25 07:44総合スコア2840
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
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/25 12:23
退会済みユーザー
2018/08/26 13:54 編集
退会済みユーザー
2018/08/25 15:31 編集
2018/08/25 15:53 編集
退会済みユーザー
2018/08/26 13:54 編集
2018/08/26 13:15 編集
退会済みユーザー
2018/08/26 13:52
2018/08/26 14:08
退会済みユーザー
2018/08/26 14:43
2018/08/26 16:03
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総合スコア5737
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/25 08:37
2018/08/25 14:05
2018/08/25 15:16
2018/09/01 14:37
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
総合スコア17
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。