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

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

ただいまの
回答率

89.12%

SSLバーチャルホストへリダイレクトされない理由を教えてください

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,594

stargryps

score 8

 前提・実現したいこと

前提
※環境を以下に列挙します。

設定しているサーバー:ホスト名を仮にwwwとします。(既存の動作しているwwwからのリニューアルです。)
環境:CentOS7.4、Apache 2.4.34、mod_ssl 2.4.34(いずれもIUSリポジトリから)、OpenSSL 1.0.2k-12(CentOS7.4固有の)
SSLは有償のものを使用。バーチャルホストとして、wwwとhomeの2つを設定しています。
このwwwサーバーにはコンテンツは何も置いておらず、ProxyPassを設定してリダイレクトさせたいサーバーへアクセスを流しているだけのサーバーになります。

リダイレクトさせたいサーバー:ホスト名を仮にprod1とします。
環境:RedHat Enterprise Linux 4.5、Apache、mod_ssl等

実現したいこと:以下の事をwwwサーバーでさせたいと思っています。
1.http://www.test.com -> https://www.test.comにリダイレクト
2.http://www.home.com/intranet -> https://home.com/intranetにリダイレクト(実際のintranetコンテンツはprod1にあります。)

ここに質問の内容を詳しく書いてください。
httpd.conf、ssl.confを設定してApacheは起動しているのですが、以下の事象が発生しました。1

 発生している問題・エラーメッセージ

1.http://www.test.comにはアクセスできるが、https://www.test.comにリダイレクトされない
(そもそも、リダイレクトエラーがerror_logに出力されていない)
2.直接https://www.test.comにアクセスすると、画面は表示されない
3.Apacheのエラーメッセージにはよくわからない通知?表示が出ている。

/var/log/error_log
(Apache起動時にメッセージが表示され、サイトにアクセスした際には何もエラーメッセージは書かれません。)

[Mon Oct 15 10:38:30.338799 2018] [suexec:notice] [pid 4360] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Mon Oct 15 10:38:30.358289 2018] [mpm_prefork:notice] [pid 4360] AH00163: Apache/2.4.34 (IUS) OpenSSL/1.0.2k-fips configured -- resuming normal operations
[Mon Oct 15 10:38:30.358314 2018] [core:notice] [pid 4360] AH00094: Command line: '/usr/sbin/httpd -D SSL -D FOREGROUND'

 該当のソースコード

/etc/httpd/conf/httpd.conf抜粋

##Apache listen port
Listen 80
##choice of modules.d/conf
Include conf.modules.d/00-base.conf
Include conf.modules.d/00-mpm.conf
Include conf.modules.d/00-proxy.conf
Include conf.modules.d/00-systemd.conf
##FQDN and port
ServerName www.test.com:80
ServerName www.test.com:443
##symboliklink yes .htaccess none
<Directory />
    Options FollowSymLinks
    #AllowOverride all
    AllowOverride None
    #Require all granted
</Directory>
<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    # Require all granted
    Require all denied
</Directory>
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    # Require all granted
    Require all denied
</Directory>
#<IfModule dir_module>
#    DirectoryIndex index.html
#</IfModule>
<Files ".ht*">
    Require all denied
</Files>
ErrorLog "logs/error_log"
LogLevel warn
<IfModule log_config_module>
    LogFormat "domain:%V\thost:%h\tserver:%A\tident:%l\tuser:%u\ttime:%{%d/%b/%Y:%H:%M:%S %z}t\tmethod:%m\tpath:%U%q\tprotocol:%H\tstatus:%>s\tsize:%b\treferer:%{Referer}i\tagent:%{User-Agent}i\tresponse_time:%D\tcookie:%{cookie}i\tset_cookie:%{Set-Cookie}o" combined_ltsv
</ifModule>
CustomLog "logs/access_log_ltsv" combined_ltsv
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    # Require all granted
    Require all denied
</Directory>
EnableSendfile off
IncludeOptional conf.d/*.conf
TraceEnable off
HostnameLookups Off
UseCanonicalName Off

 該当のソースコード

/etc/httpd/conf.d/rewrite.conf

<IfModule rewrite_module>
    RewriteEngine On
    Loglevel alert rewrite:trace8
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>

 該当のソースコード

/etc/httpd/conf.d/ssl.conf

#listen port
Listen 443
<VirtualHost 192.168.2.1:80> #http://www.test.com/
    ServerName www.test.com
    ServerAdmin webmaster@test.com
    ErrorLog logs/www_error_log
    LogLevel warn

                ProxyPass               /       http://prod1.com/
                ProxyPassReverse        /       http://prod1.com/
</VirtualHost>    

<VirtualHost 192.168.2.1:443> #https://www.test.com/
    ServerName www.test.com
    ServerAdmin webmaster@test.com
    ErrorLog logs/www_error_log
    LogLevel warn

                ProxyPass               /       http://prod1.com/
                ProxyPassReverse        /       http://prod1.com/
</VirtualHost>

<VirtualHost 192.168.2.2:443> #https://home.test.com/
    ServerName home.test.com
    ServerAdmin webmaster@test.com
    SSLProxyEngine on
    ErrorLog logs/home-ssl_error_log
    CustomLog logs/home-ssl_access_log combined_ltsv
    LogLevel warn
    BrowserMatch "MSIE [2-5]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
    CustomLog logs/home-ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
    Options All
    Options -Indexes

        ProxyPass        /            https://prod1.com/
        ProxyPassReverse    /            https://prod1.com/
</VirtualHost>

 試したこと

1.リダイレクトの設定箇所が問題か
htt.conf内に記載していたrewrite.confの内容をrewrite.confとして外出し->効果なし
2.SSL付きでApacheが起動していない?
/etc/sysconfig/httpd内のOPTIONS=に"DSSL"を付けて起動->効果なし
3.IfModule rewrite_moduleをIfModule mod_rewrite_soに変更->効果なし

他にもいろいろやったのですが、メモしていませんでいた。すいません。

 補足情報(FW/ツールのバージョンなど)

なし。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

単なるタイプミスならすみませんが、

    RewriteRule ^(.*)$ https://%{HTTP_POST}%{REQUEST_URI} [R,L]

HTTP_POST -> HTTP_HOST

リダイレクトされない理由がこれだった場合、その他の質問を書き直した方がよいかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/15 17:21

    443でListenはしているみたいですね。
    念のため、以下のコマンドを実行して、conf, module の情報を確認してみてください。

    httpd -t -D DUMP_INCLUDES
    httpd -t -D DUMP_MODULES

    キャンセル

  • 2018/10/15 17:41

    ssasakiさん

    コマンドの結果です。
    [root@www ~]# httpd -t -D DUMP_INCLUDES
    Included configuration files:
    (*) /etc/httpd/conf/httpd.conf
    (56) /etc/httpd/conf.modules.d/00-base.conf
    (56) /etc/httpd/conf.modules.d/00-dav.conf
    (56) /etc/httpd/conf.modules.d/00-lua.conf
    (56) /etc/httpd/conf.modules.d/00-mpm.conf
    (56) /etc/httpd/conf.modules.d/00-optional.conf
    (56) /etc/httpd/conf.modules.d/00-proxy.conf
    (56) /etc/httpd/conf.modules.d/00-ssl.conf
    (56) /etc/httpd/conf.modules.d/00-systemd.conf
    (56) /etc/httpd/conf.modules.d/01-cgi.conf
    (362) /etc/httpd/conf.d/autoindex.conf
    (362) /etc/httpd/conf.d/rewrite.conf
    (362) /etc/httpd/conf.d/ssl.conf
    (362) /etc/httpd/conf.d/userdir.conf
    (362) /etc/httpd/conf.d/welcome.conf
    [root@www ~]# httpd -t -D DUMP_MODULES
    Loaded Modules:
    core_module (static)
    so_module (static)
    http_module (static)
    access_compat_module (shared)
    actions_module (shared)
    alias_module (shared)
    allowmethods_module (shared)
    auth_basic_module (shared)
    auth_digest_module (shared)
    authn_core_module (shared)
    authn_dbd_module (shared)
    authn_dbm_module (shared)
    authn_file_module (shared)
    authn_socache_module (shared)
    authz_core_module (shared)
    authz_dbd_module (shared)
    authz_dbm_module (shared)
    authz_groupfile_module (shared)
    authz_host_module (shared)
    authz_owner_module (shared)
    authz_user_module (shared)
    cache_module (shared)
    cache_disk_module (shared)
    cache_socache_module (shared)
    data_module (shared)
    dbd_module (shared)
    deflate_module (shared)
    dir_module (shared)
    dumpio_module (shared)
    echo_module (shared)
    env_module (shared)
    expires_module (shared)
    ext_filter_module (shared)
    filter_module (shared)
    headers_module (shared)
    include_module (shared)
    info_module (shared)
    log_config_module (shared)
    logio_module (shared)
    macro_module (shared)
    mime_magic_module (shared)
    mime_module (shared)
    negotiation_module (shared)
    remoteip_module (shared)
    reqtimeout_module (shared)
    request_module (shared)
    rewrite_module (shared)
    setenvif_module (shared)
    slotmem_plain_module (shared)
    slotmem_shm_module (shared)
    socache_dbm_module (shared)
    socache_memcache_module (shared)
    socache_shmcb_module (shared)
    status_module (shared)
    substitute_module (shared)
    suexec_module (shared)
    unique_id_module (shared)
    unixd_module (shared)
    version_module (shared)
    vhost_alias_module (shared)
    watchdog_module (shared)
    mpm_prefork_module (shared)
    proxy_module (shared)
    proxy_connect_module (shared)
    proxy_http_module (shared)
    ssl_module (shared)
    systemd_module (shared)

    以上です。

    キャンセル

  • 2018/10/16 15:42

    一部、自己解決しました。

    まず、ssl.confに「SSLEngine one」の設定が入っていないことが分かりました。
    役割は違うとはいえ、SSLProxyEngine onは入っていたので、これに気づくまで時間がかかってしまいました。
    さらに、強制的にリダイレクトさせるように80番のバーチャルホストの設定をバッサリ削除しました。

    以上の2点を実施、Apacheの再起動を行ったことでhttp://www.test.com->https://www.test.comにリダイレクトされるようになりました。
    現在、https://home.test.comだけ接続することが出来ない状態まで持ってくることが出来ました。
    これについてはおそらくバーチャルホストの設定にミスがあるんだろうと考えております。

    タイトルの問題については解決いたしましたので、この質問についてはクローズさせていただこうと思います。ssasakiさんありがとうございました。

    キャンセル

0

ssasaki様

ご指摘ありがとうございます。
タイプミスでした。
設定上はHTTP_HOSTとなっております。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 89.12%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる