リバースプロキシしているApacheにHTTPS接続できないとき

  • このエントリーをはてなブックマークに追加
  • Pocket

こんにちは。iQeda [@iQeeeda] です。

Apache でリバースプロキシ (Reverse proxy) をしている場合、
HTTPS 接続時、以下のようなエラーが表示されることあります。

curl --verbose https://eeeeg.tokyo

curl: (35) error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

Google Chrome では ERR_SSL_PROTOCOL_ERROR と、ザックリしたエラーが表示されます。

これは「HTTPS (403) 接続のはずなのに、HTTP (80) 接続が使われているよ」
…という指摘の可能性があります。その場合の VirtualHost を使った解消法を説明します。

Apache のバージョンは 2.4.41 で検証しています。

httpd.conf の確認

ss -tlnpnetstat -lnp | grep 443 で、念の為 443 ポートが開いているか確認します。
何も表示されなければ httpd.conf に以下を追記します。

/etc/httpd/conf/httpd.conf

Listen 80
Listen 443

リバースプロキシ設定も見ておきます。こんな感じになっているかと思います。

/etc/httpd/conf/httpd.conf

ProxyRequests Off

<Location />
    ProxyPass http://localhost:3000/
    ProxyPassReverse http://localhost:3000/
    # Location ヘッダに localhost の  HTTP 通信を指定しないようにする
    Header edit Location ^http:// https://
</Location>

VirtualHost を作成する

httpd.conf で VirtualHost の conf ファイルを読み込むようにします。

/etc/httpd/conf/httpd.conf

Include vhost/*.conf

/etc/httpd/vhost/ 配下に、適当な名前で conf ファイルを作成します。

cd /etc/httpd

# vhost ディレクトリがなければ作成する
sudo mkdir vhost
cd vhost

# わかりやすい名前で conf ファイルを作成する (何でもいいです)
sudo vi hoge.conf

この hoge.conf にポート 443 で HTTPS アクセスしてきたときの対応を記述します。

ポイントは SSLEngine ・証明書ファイル・リバースプロキシの設定です。

/etc/httpd/vhost/hoge.conf

<VirtualHost *:443>
    SSLEngine On
    SSLCertificateFile /etc/letsencrypt/live/[ドメイン]/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/[ドメイン]/privkey.pem
    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/
    ProxyPreserveHost On
</VirtualHost>

SSL 証明書は Let’s Encrypt から取得していたので、/etc/letsencrypt/live/[ドメイン]/cert.pem/etc/letsencrypt/live/[ドメイン]/privkey.pem を設定しています。

僕はこれで https://ドメイン 接続できるようになりました。

日本語でも英語でも、このエラーについて調べてみましたが、
ここまで VirutalHost の設定は書かれていなかったので、詰まっている方は試してみて下さい。

HTTP から HTTPS にリダイレクトさせるには?

リバースプロキシで HTTPS リダイレクトをかける方法を解説しました。

関連記事

お仕事ください!

僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。
なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。

カテゴリ「AWS」の最新記事

最新記事

コメント

  1. 通りすがり より:

    > HTTPS (403)
    403なんですか?

コメントを残す

*