構築事例:Nginxを利用したクライアント認証サーバ導入
すでに構築していたWeb会議システムのRocket.Chatにアクセスする際、クライアント証明書認証をしたいとのご要望でした。そこで、デージーネットでは、クライアント認証サーバにNginxを提案いたしました。
- お客様が悩まれていた課題
- Rocket.Chatサーバのアクセス制御ができていない
- クライアント証明書認証ができていない
- +導入企業プロフィール
- ★
導入企業業種
情報・通信
ユーザー規模
およそ8000人 以上
利用OS
Red Hat Enterprise 7
導入月
2020年7月
デージーネットが提案した「Nginxを利用したクライアント認証サーバ導入」
クライアント認証サーバにNginxを利用
Nginxとは
Nginxとは、オープンソースソフトウェアの高速Webサーバソフトウェアで、大容量のデータ配信や大量同時接続に耐えることを目的に開発されています。Linux(CentOS)やFreeBSD、Windows、macOSのOSをサポートしています。また、クライアント証明書認証を実現することができます。Webサーバには、代表格であるApacheがありますが、Apacheの問題点である「C10K問題」にも対応しています。C10K問題(クライアント1万台問題)とは、ハードウェアの性能上は問題がなくても、あまりにもクライアントの数が多くなるとサーバがパンクする問題のことです。Apacheの採用している設計方式だと約10,000台の同時接続には耐えることができません。Nginxは大量の同時リクエストを処理することを前提に開発されたWebサーバであり、この問題を解決するためにApacheとは異なる設計の方法を採用しています。
またリバースプロキシとして利用することができます。Nginxが静的コンテンツをキャッシュしておくことで、バックエンドのWebサーバやアプリケーションサーバの負荷を減らすことに繋がります。ロードバランサとしても動作することができるため、大量アクセスの負荷分散をさせることもできます。
今回、お客様がRocket.Chatのアクセス制御をご希望でした。上記の点とRocket.Chat公式ドキュメントにNginxを紹介している点を含めNginxをインストール(install)しました。
クライアントのIPアドレスによる処理の切り分け
お客様のサーバーでは、デフォルトでRocket.ChatにアクセスするクライアントのIPアドレスによって指定した2つのグループにわかれるように設定をおこなっていました。新たにRocket.Chat用の設定ファイルを作成し、そこにリバースプロキシの設定を記載し実行しました。2つのグループを別々のポートにアクセスを振り分けるように配置し、Nginxを2つのポートで受け付け、Nginxで振り分けられたポートによって異なる処理を行うように追加で設定を行いました。Rocket.Chatには、複数のポートにアクセスするようにしました。
クライアント証明書による認証
クライアント証明書とは、電子証明書の一種でクライアントやユーザを認証し発行されます。今回、2つのクライアントのうち1つの外部からのグループにはクライアント証明認証行うように設定をしました。また、証明書による認証では、有効期限よりも前に失効させたデジタル証明書を表示している証明書失効リスト(CRL)を確認する必要があります。随時変更される証明書失効リスト(CRL)ファイルを何度も確認しに行くことは管理の手間になります。そこで、定期的に取得・反映するため、グループ外接続用ポートのserverの設定には、ssl_client_certificateやssl_crlをコマンドで設定して、クライアント証明書認証の設定とスケジュールを組んで自動的に失効リストを参照できるようにしました。
導入後の結果
【Webセミナー】自社でOSSを採用しよう!今更聞けないOSSの基本セミナー
日程: | 11月22日(金)Webセミナー「BigBlueButton」を使用します。 |
内容: | OSSを導入したいけど、どこから手をつければいいかわからない方必見! |
ご興味のあるかたはぜひご参加ください。 |
Nginxを利用したクライアント認証サーバ導入の関連ページ
認証サーバ構築の事例一覧
- OpenLDAPによるLDAPサーバのユーザ統合管理システム事例
- OpenLDAPによるLDAPサーバのマルチマスタ構成事例
- LDAPサーバ冗長化事例
- RADIUSサーバ事例
- CaptivePortalを利用したSNS認証事例
- Google AuthenticatorとFreeRADIUSを使ったOTP認証事例
- daloRADIUSを使用したRADIUSサーバ事例
- 389 Directory Serverを利用したLDAPサーバ事例
- OpenXPKIを利用したプライベート認証局事例
- Nginxを利用したクライアント認証サーバ導入事例
- FreeRADIUSを利用した認証サーバ事例
- Amazon Linux 2へ認証サーバOSの移行事例
- Keycloakを利用したシングルサインオン認証サーバの導入事例
- 管理の負担を軽減したKeycloakによるシングルサインオンサーバ構築事例
- 多要素認証にTOTPを利用したKeycloakサーバ導入事例