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;
}
}上記の設定には、2つのSSL証明書ファイルが必要です。それは、 ssl_certificate および ssl_certificate_key オプションで示されています。
上記の例では、このNGINXサーバーへのリクエストは、 localhost (127.0.0.1)のポート3000で動作する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を指すように変更する必要があります。
作成された証明書は1年間のみ有効です( -days 365 オプション)、ただし長期間有効にすることも可能です。
自己署名証明書を使った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)を外部からのトラフィックからブロックし、すべての接続がプロキシサーバーを介して行われるようにすることを検討してください。
