CentOS-RHEL 8 で Hitch を使用してワニス キャッシュの HTTPS を有効にする方法
ワニス キャッシュには、SSL/TLSおよびポート443に関連付けられたその他のプロトコルのネイティブ サポートがありません。 Web アプリケーションのパフォーマンスを向上させるために ワニッシュ キャッシュを使用している場合は、 SSL/TLS 終端プロキシと呼ばれる別のソフトウェアをインストールして設定し、SSL/TLS 終端プロキシと並行して動作させる必要があります。 > ワニス キャッシュでHTTPSを有効にします。
Hitch は、Varnish Cache 用に設計された、libev ベースの無料のオープンソースでスケーラブルな SSL/TLS プロキシであり、現在 Linux、OpenBSD、FreeBSD、MacOSX で動作します。ポート 443 (HTTPS 接続のデフォルト ポート) でリッスンすることで TLS/SSL 接続を終了し、暗号化されていないトラフィックを Varnish Cache に転送します。 、他のバックエンドでも動作するはずです。
TLS1.2 と TLS1.3 および従来の TLS 1.0/1.1 をサポートし、ALPN をサポートします ( >アプリケーション層プロトコル ネゴシエーション) およびHTTP/2 用のNPN (次のプロトコル ネゴシエーション) (クライアントに信号を送るための PROXY プロトコル)バックエンドへの IP/ポート、オリジンへの UNIX ドメイン ソケット接続、SNI (サーバー名表示) (ワイルドカード証明書の有無にかかわらず)。さらに、 最大15,000 のリスニング ソケットと500,000 の証明書を必要とする大規模なインストールにも適しています。
Nginx および Apache HTTP サーバー用の Varnish Cache のインストールに関する以前の 2 つの記事の続きとして、このガイドでは HTTPS< を有効にする方法を示します。 は、CentOS/RHEL 8 上の Hitch TLS プロキシを使用したワニス キャッシュ用です。
このガイドは、Nginx または Apache Web サーバー用の Varnish がインストールされていることを前提としています。それ以外の場合は、以下を参照してください。
- CentOS/RHEL 8 に Nginx Web サーバー用の Varnish Cache 6 をインストールする方法
- CentOS/RHEL 8 に Apache Web サーバー用の Varnish Cache 6 をインストールする方法
ステップ 1: CentOS/RHEL 8 に Hitch をインストールする
1. Hitch パッケージは、EPEL (Enterprise Linux 用の追加パッケージ) リポジトリで提供されます。これをインストールするには、まずシステムでEPELを有効にしてから、パッケージをインストールします。 OpenSSL パッケージがインストールされていない場合は、それもインストールしてください。
dnf install epel-release
dnf install hitch openssl
2. パッケージのインストールが完了したら、ヒッチが機能するようにワニス キャッシュを設定する必要があります。また、SSL/TLS 証明書とワニスをバックエンドとして使用するようにヒッチを設定する必要もあります。 Hitch の主な設定ファイルは、/etc/hitch/hitch.conf にあります。これについては以下で説明します。
ステップ 2: ヒッチ用のワニス キャッシュの構成
3. 次に、Varnish が PROXY プロトコルを使用して追加のポート (この場合は 8443) をリッスンできるようにします。サポート、ヒッチとの通信用。
そこで、Varnish のsystemd サービス ファイルを開いて編集します。
systemctl edit --full varnish
ExecStart 行を探し、値 127.0.0.1:8443,proxy を持つ -a
フラグを追加します。 127.0.0.1:8443 の値を使用すると、Varnish は内部接続 (同じサーバー上で実行されているプロセス、つまりこの場合はヒッチ) のみを受け入れ、外部接続は受け入れないことを意味します。
ExecStart=/usr/sbin/varnishd -a :80 -a 127.0.0.1:8443,proxy -f /etc/varnish/default.vcl -s malloc,256m
ファイルを保存し、Varnish サービスを再起動して最新の変更を適用します。
systemctl restart varnish
ステップ 3: SSL/TLS 証明書の取得
4. このセクションでは、ヒッチで使用するSSL/TLS証明書バンドルを作成する方法を説明します。このガイドでは、自己署名証明書、商用証明書、またはLet’s Encrypt の証明書を使用する方法のさまざまなオプションについて説明します。
自己署名証明書 (ローカルのテスト環境でのみ使用してください) を作成するには、OpenSSL ツールを使用できます。
mkdir /etc/ssl/tecmint.lan
cd /etc/ssl/tecmint.lan/
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tecmint.lan.key -out tecmint.lan.crt
次に、次のように証明書とキーのバンドルを作成します。
cat tecmint.crt tecmint.key >tecmint.pem
注: 運用環境で使用する場合は、商用の認証局 (CA) から証明書を購入するか、 Let's Encrypt から、完全に認識された自動化された無料の証明書を取得します。次に、PEM バンドルを作成します。
商用CAから証明書を購入した場合は、図のように秘密キー、証明書、CA バンドルを結合する必要があります。
cat example.com.key example.com.crt example.com-ca-bundle.crt > /etc/ssl/example.com.pem
Let's Encrypt の場合、証明書、秘密キー、および完全なチェーンは /etc/letsencrypt/live/example.com/ に保存されるため、次のようにバンドルを作成します。 。
cat /etc/letsencrypt/live/example.com/fullchain.pem /etc/letsencrypt/live/example.com/privkey.pem >/etc/letsencrypt/live/example.com/example.com_bundle.pem
ステップ 4: ヒッチの設定と開始
5. 次に、Varnish を Hitch のバックエンドとして設定し、使用する SSL/TLS 証明書ファイルを指定します。 HTTPS は、Hitch メイン設定ファイルにあり、編集のために開きます。
vi /etc/hitch/hitch.conf
フロントエンドセクションでは、Hitch がリッスンする IP アドレスとポートを定義します。デフォルト設定では、サーバーに接続されているすべての IPv4 および IPv6 インターフェイスをリッスンし、 ポート 443 で実行され、 受信 HTTPS< を処理します。 リクエストを ワニス に渡します。
デフォルトのバックエンドプロキシ ポートを6086から8443(リクエストをVarnishに転送するために使用されるポート)に変更します。 バックエンドパラメータを使用したヒッチ設定ファイル。また、次のようにpem-file パラメータを使用して証明書ファイルを指定します。
backend = "[127.0.0.1]:8443"
#pem-dir = "/etc/pki/tls/private"
pem-file = "/etc/ssl/tecmint.lan/tecmint.pem"
ファイルを保存して閉じます。
6. 次に、hitch サービスを開始し、システム起動時に自動的に開始されるようにします。 --now
スイッチをenableと一緒に使用すると、systemdサービスも開始され、次のようにステータスがチェックされて稼働しているかどうかが確認されることに注意してください。
systemctl enable --now hitch
systemctl status hitch
7. Web サイト/アプリケーションが HTTPS で実行されているかどうかのテストに進む前に、HTTPS サービス ポート 443 を許可する必要があります。ファイアウォールにより、サーバー上のそのポート宛てのリクエストがファイアウォールを通過できるようになります。
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload
ステップ 5: Varnish Cache-Hitch セットアップによる SSL/TLS 終端のテスト
8. 次に、ワニス キャッシュ ヒッチ設定をテストします。ウェブブラウザを開き、ドメインまたはサーバーの IP を使用してHTTPS 経由で移動します。
https://www.example.com
OR
https://SERVER_IP/
Web アプリケーションのインデックス ページが読み込まれたら、HTTP ヘッダーをチェックして、 コンテンツが ワニス キャッシュ 経由で提供されていることを確認します。
これを行うには、読み込まれた Web ページを右クリックし、 オプションのリストから検査を選択して開発者ツールを開きます。次に、[ネットワーク] タブをクリックし、 ページを再読み込みし、次のスクリーンショットで強調表示されているように、HTTP ヘッダーを表示するリクエストを選択します。
ステップ 6: ワニス キャッシュで HTTP を HTTPS にリダイレクトする
9. Web サイトを HTTPS のみで実行するには、すべての HTTP トラフィックを HTTPS にリダイレクトする必要があります。これを行うには、Hitch 構成ファイルに次の構成を追加します。
vi /etc/hitch/hitch.conf
まず、vlc 4.0; のすぐ下に行 import std; を追加し、すぐに実行される最初の VCL サブルーチンである vlc_recv サブルーチンを探します。 ワニス キャッシュがクライアント リクエストを基本データ構造に解析した後。ここで、リクエスト ヘッダーを変更し、クライアント リクエストをリダイレクトするためのシンセサイザーを実行できます。
このように変更します。
sub vcl_recv {
if (std.port(server.ip) != 443) {
set req.http.location = "https://" + req.http.host + req.url;
return(synth(301));
}
}
プロキシプロトコルにより、ワニスはヒッチのリスニングポート443をserver.ip<から参照できることに注意してください。 変数。したがって、行 std.port(server.ip) は、クライアント接続を受信したポート番号を返します。
ポートが HTTPS の 443 ではない場合 ((std.port(server.ip) != 443) で確認)、サブルーチンリクエストの HTTP ロケーション ヘッダー (set req.http.location) を安全なリクエスト (“https://” + req.http.host<) に設定します。 + req.url) は、Web ブラウザに Web ページの HTTPS バージョンを読み込むように要求するだけです (つまり、URL リダイレクト)。
Location ヘッダーは、vcl_synth サブルーチン (return(synth(301)) を使用して呼び出されます) に HTTP ステータス コードとともに送信されます。 301 (永久に移動)。
10. 次に、次の vcl_synth サブルーチン (多くの使用例の 1 つはユーザーのリダイレクトです) を追加して、上記のシンセサイザーを処理します。
sub vcl_synth {
if (resp.status == 301) {
set resp.http.location = req.http.location;
set resp.status = 301;
return (deliver);
}
}
応答ステータスが 301 であるかどうか、応答の HTTP Location ヘッダーがリクエストの HTTP Location ヘッダーに設定されているかどうかを確認します。これは実際には HTTPS へのリダイレクトであり、配信アクションを実行します。
配信アクションは、バックエンドからの応答を使用して応答を構築し、その応答をキャッシュに保存して、クライアントに送信します。
ファイルを保存して閉じます。
11. もう一度、サービスを再起動して、Varnish 構成に新しい変更を適用します。次に、curl コマンドライン ツールを使用して、HTTP から HTTPS へのリダイレクトを確認します。
systemctl restart varnish
curl -I http://eaxmple.com/
ブラウザからの応答も、次のスクリーンショットに示すものと同じになります。
ここまではすべて順調に進んでいることを願っています。そうでない場合は、以下のフィードバック フォームからコメントまたは質問を書き込んでください。詳細な構成オプションについては、Varnish Cache のドキュメントと Hitch のドキュメントを参照してください。