リバースプロキシを使ったAxe DevTools Linterの使用方法
NGINXをリバースプロキシとして使用し、オンプレミスのAxe DevTools Linterインスタンスへの接続を暗号化する方法
NGINXのようなリバースプロキシサーバーを使用することで、オンプレミスのAxe DevTools Linterインスタンスへの接続を暗号化し、中間者攻撃ののぞき見を防ぐことができます。このガイドではその方法を紹介します。
要件
このガイドはLinuxマシンにインストールする前提で記述されています。
以下のソフトウェアが必要です:
- オンプレミス Axe DevTools Linter バイナリ
- NGINX
- OpenSSL(自己署名証明書を作成するため)
NGINXのインストールに関するヘルプについては、NGINX インストールを参照してください。
オンプレミスのAxe DevTools Linterサーバーのインストールについての詳細情報は、オンプレミスサーバーの設定を参照してください。
自己署名証明書を作成するにはOpenSSLが必要です。OpenSSLについての詳細は、OpenSSLを参照してください。
NGINXの設定
設定ファイルを作成し、/etc/nginx/config.dディレクトリに配置することができます。この例では、axe-linter.confという名前の設定ファイルを作成し、/etc/nginx/config.dディレクトリに配置します。以下の設定は、NGINXをリバースプロキシとして設定する方法の例です:
server {
listen 443 ssl;
listen [::]:443 ssl;
# Configure SSL.
# Replace `/opt/deque/cert/axe.crt` and `/opt/deque/cert/axe.key`
# with your own key files.
ssl_certificate /opt/deque/axe/certs/axe.crt;
ssl_certificate_key /opt/deque/axe/certs/axe.key;
server_name _;
# Redirect all requests to Axe DevTools Linter
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}上記の設定では、ssl_certificateおよびssl_certificate_keyオプションで示されているように、2つのSSL証明書ファイルが必要です。
上記の例では、このNGINXサーバーへのリクエストは、ポート3000のlocalhost(127.0.0.1)上のAxe DevTools Linterサーバーに転送されます。
設定を変更した後、以下のようにNGINXを再起動してください。
sudo service nginx restart
DNSの設定
暗号化された接続を使用するため、サーバーにはSSL証明書が必要です。サーバーにDNSに登録された名前(例えばDNS Aレコード)がある場合、Let's Encryptのようなサービスを使用して無料の証明書を生成できます。IPアドレスのみでサーバーにアクセスしたい場合、自己署名証明書を作成する必要があります。Let's Encryptのようなサービスは、IPアドレスの証明書を発行しません。彼らはサーバーがDNSサーバーに登録されていることを要求します。
自己署名証明書の使用
IPアドレスのみでアクセスされるサーバーの場合、最初のステップは次のようにOpenSSLを使って自己署名証明書を作成することです。
openssl req -newkey rsa:2048 -x509 -nodes -keyout /etc/ssl/private/axe-selfsigned.key -new -out /etc/ssl/certs/axe-selfsigned.crt -subj /CN=axe-linter-server -reqexts SAN -extensions SAN -config <(cat /etc/ssl/openssl.cnf <(printf '[SAN]\nsubjectAltName=IP:10.10.1.50')) -sha256 -days 365上記のコマンドでは、IPアドレスをサーバーのIPアドレス(例では10.10.1.50に設定されています)に変更する必要があります。また、/etc/nginx/config.dにある設定ファイル内の証明書パスを/etc/ssl/private/axe-selfsigned.keyと/etc/ssl/certs/axe-selfsigned.crtに指すように変更する必要があります。
作成された証明書は-days 365オプションにより1年間のみ有効ですが、長い期間に変更することもできます。
自己署名証明書を使ったAxe DevTools Linter コネクター
証明書をクライアントマシン(この例ではaxe-selfsigned.crtファイル)にコピーする必要がありますので、クライアントコードまたはAxe DevTools Linter Connectorが証明書を使用できるようにしてください。
その後、環境変数の設定で説明されているように、環境変数を設定する必要があります。
次の例は、自己署名証明書を使用してAxe DevTools Linter Connectorを使用する方法を示しています。
NODE_EXTRA_CA_CERTS=/path/to/downloaded/axe-selfsigned.crt axe-linter-connector -s . -d .環境変数NODE_EXTRA_CA_CERTSは、nodeおよびAxe DevTools Linter Connectorに、通常であれば拒否される自己署名証明書を受け入れるように指示します。以下のように設定してください:
axe-linter-connector -s . -d .
Error: self signed certificate
at TLSSocket.onConnectSecure (_tls_wrap.js:1502:34)
at TLSSocket.emit (events.js:314:20)
at TLSSocket._finishInit (_tls_wrap.js:937:8)
at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:711:12)環境変数の設定
Axe DevTools Linter Connectorをリバースプロキシサーバーで使用するには、次の2つの環境変数を変更する必要があります:
- AXE_LINTER_SERVER_URL
- AXE_LINTER_SERVER_PORT
例えば、以下のように変数を設定できます:
export AXE_LINTER_SERVER_URL=https://10.10.1.50
export AXE_LINTER_SERVER_PORT=443URLはhttpsで始まり、ポートは443でなければならず、そうでないとサーバーに接続できません。
ファイアウォールでの未暗号化ポートのブロック
Axe DevTools Linterサーバーに割り当てられたポート(ここではポート3000)を外部からのトラフィックからブロックし、すべての接続がプロキシサーバーを介して行われるようにすることを検討してください。
