インターネット上の不正アクターの決断力と巧妙な行動にはキリがないようです。ほぼ毎日、新たなネットワーク侵害、データ盗難、ランサムウェア攻撃に関するニュースが大きく報じられています。壊滅的な結果を招く可能性もあり、Web資産やトラフィックがハッカーの魔の手に落ちないように保護することがますます重要になっています。
インターネット上の主要なトラフィックの1つである、ブラウザとWebサイト間のHTTPトラフィックは、当然これらの攻撃の対象となります。HTTPトラフィックを傍受や改竄から保護する基本的な方法の1つは、Transport Layer Security(TLS)プロトコルを使用して暗号化することです。暗号化されたトラフィックは、正しくは、secure(セキュア)のSを加えたHTTPSトラフィックと呼ばれますが、多くの場合、どちらのトラフィックも単にHTTPと呼ばれます。
Webサイトが暗号化に対応しているかどうかは、URLを見ればわかります。
- URLがhttps://から始まるサイトは暗号化を使用しています
- URLがhttp://から始まるサイトは暗号化を使用していません
また、多くのブラウザでは、暗号化されている場合、アドレスバーの左端に南京錠のアイコンが表示されます。
注:TLSの前身であるSecure Sockets Layer(SSL)は、現在では非推奨ですが、セキュリティ上の弱点があるにもかかわらず、今でもかなり一般的に使用されています。同様に、TLSが実際に使用されている場合でも、HTTPトラフィックの暗号化について言及する場合、SSL(またはSSL/TLS)という用語がよく使用されています。
SSL/TLSとNGINX
NGINXにおけるSSL/TLS暗号化の簡単な例として、いくつかのディレクティブを紹介します。HTTPS用の基本的なNGINX構成は非常にシンプルです。
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
ssl_certificate_key www.example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
#...
}
listen
ディレクティブは、server_name
ディレクティブで指定されたドメイン(ここでは、www.example.com)に対するHTTPSトラフィックのためにポート443をリッスンするようにNGINXに指示します(ssl
パラメータ)。
ssl_certificate
とssl_certificate_key
ディレクティブは、ドメインのTLS証明書と鍵が格納されているファイルの名前を指定します。ssl_protocols
とssl_ciphers
ディレクティブは、それぞれ、このNGINX仮想サーバーがサポートするSSL/TLSのバージョンと暗号スイート(暗号化アルゴリズム)を指定します。これらのディレクティブを設定すると、NGINXは、クライアントと安全な接続を交渉し、証明書によって認証されたHTTPSコンテンツを提供します。
ウェビナーの利用
HTTPSのディレクティブの使用方法を説明することは簡単ですが、証明書、鍵、暗号の背後にある概念を理解することはかなり複雑です。より詳しくわかりやすい説明については、オンデマンドの無料ウェビナー「NGINX 101: Web Traffic Encryption with SSL/TLS and NGINX」(英語版)をご参照ください。
このウェビナーでは、Webトラフィックの暗号化について詳しく説明しています。
- NGINXがクライアントとのHTTPSで保護されたセッションを確立する方法
- NGINXの基本的な設定と高度な設定(リアルタイムデモあり)
- HTTPリクエストをHTTPSにリダイレクトする方法
- 推奨されるTLS設定
NGINX Open Sourceのご利用に興味がある方、またはご質問がある方は、NGINX CommunityのSlackにご参加ください。自己紹介の後、NGINXパワーユーザーのコミュニティと交流することができます。NGINX Plusを体験したい方は、30日間の無料トライアルを開始するか、お問い合わせの上、具体的なユースケースをご相談ください。