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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

SSL

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

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Q&A

解決済

2回答

1514閲覧

SSL化した時にHTTPでアクセスしてもHTTPSへリダイレクトされない

tanaka_kana

総合スコア12

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

SSL

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

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

0グッド

0クリップ

投稿2019/08/04 05:59

前提・実現したいこと

現在

  • Apache2.4.6
  • CentOS7

にて運用しているWebサーバーをLet's EncryptでSSL化しました。

そこで、サイトにHTTPSでアクセスすると普通にアクセスできるのですが、HTTPでアクセスした時にHTTPSにリダイレクトするような設定にしたいと思っています。

試したこと

.htaccessにて

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] </IfModule>

の追加や、JavaScriptにて

JavaScript

1location.href = 'https://example.com' + location.pathname

などをやったのですが、サイトにHTTPでアクセスすると以下のレスポンスが返されます。

イメージ説明

当初、.htaccessの書き方や設定ができていないと思い、それ関連を調べたのですが.htaccessはうまく動いているようなので、他のapacheの設定がうまくいっていないと思ってはいるのですが直し方が分からず・・・

原因がわかる方、教えていただけると幸いです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

単純な静的コンテンツだけのサイトならそれで問題ないと思うのですが、
バックエンドでTomcatとかのアプリが動いていると、起きるエラーに似ている気がします。

エラーメッセージは、HTTPSのポートにHTTPを投げているときによく遭遇するものだと
思います。

このあたりが参考になると思います。
https://qiita.com/umisora/items/3ff3af710d0a6299fff9

投稿2019/08/04 07:05

iSemimaru

総合スコア27

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

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

tanaka_kana

2019/08/04 07:17

現在配信してるのは静的コンテンツだけですね。 URLでhttp://example.com:80とやったりしてもダメでした... FWも80番空いてますので、httpd.confのListen 80 Listen 443としてるのがダメなんでしょうか・・・
iSemimaru

2019/08/04 09:25

telnetコマンド(yumでinstallする必要があります)で、telnet localhost 80[Enterキー]を実行して =========================より下の部分を入力してみてください。 うちの環境(CentOS7+Apache2.4.6、SSLなし、.htaccessに同じのを指定)だとこんな結果でした。 Apacheから返してくるLocationヘッダがなんかおかしいのだと思います。 # telnet localhost 80 Trying ::1... Connected to localhost. Escape character is '^]'. GET / HTTP/1.0 Host: hogehoge HTTP/1.1 301 Moved Permanently Date: Sun, 04 Aug 2019 09:19:38 GMT Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips Location: https://hogehoge/ Content-Length: 225 Connection: close Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="https://hogehoge/">here</a>.</p> </body></html> Connection closed by foreign host. # ========================= GET / HTTP/1.0[Enterキー] Host: hogehoge[Enterキー] [Enterキー]
iSemimaru

2019/08/04 09:27

あぁ。一部化けてる・・。
tanaka_kana

2019/08/04 09:37

$ telnet localhost 80 Trying ::1... Connected to localhost. Escape character is '^]'. GET /HTTP/1.0 HTTP/1.1 400 Bad Request Date: Sun, 04 Aug 2019 09:34:46 GMT Server: Apache Content-Length: 362 Connection: close Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1> <p>Your browser sent a request that this server could not understand.<br /> Reason: You're speaking plain HTTP to an SSL-enabled server port.<br /> Instead use the HTTPS scheme to access this URL, please.<br /> </p> </body></html> Connection closed by foreign host. やはり同じ感じでbad requestが出ます・・・
iSemimaru

2019/08/04 09:41

Port80がSSLになってるみたいですね。 httpd.confのListenを80だけにしてください。 httpsのはconf.d/ssl.confにあるのだけで十分です。
tanaka_kana

2019/08/04 09:53

httpd.confのListenを80だけにしてhttpdをrestartしてからtelnet localhost 80やってみましたが、上と同じ結果が帰りました...( ̄O ̄;)
iSemimaru

2019/08/04 09:55

ssl.confのほうにもListen 80を追加していませんか? そっちは要らないので消してください。
tanaka_kana

2019/08/04 11:55

解決しました!!ありがとうございました!!!
guest

0

https で会話するはずのポートに、http で接続しにいったときのメッセージです。そんな設計になっていませんか?

投稿2019/08/04 06:31

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tanaka_kana

2019/08/04 06:52

そういう設定があるとしたらhttpd.confでしょうか??
退会済みユーザー

退会済みユーザー

2019/08/04 06:56 編集

http://example.com:443 みたいなアクセスしてませんか?って回答です。 メッセージはリダイレクト以前の問題を示唆しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問