HTTPSサーバを構築する:UNIX処方箋
現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、SSLの必要性とその仕組み、およびHTTPSサーバの構築手順を解説します。
公開Webサーバを構築する計画があり、セキュリティ上HTTPではなくHTTPSでアクセスできるようにする必要が出てきました。しかし、そもそもHTTPSがよく分かっていません。HTTPとHTTPSでは何が違うのでしょうか?
HTTPの通信は暗号化されていませんが、HTTPSはHTTPにSSL(Secure Socket Layer)を組み込むことで、通信の暗号化、データの改ざん防止、通信相手の認証を可能としています。SSLは、セッション層で機能する暗号化のプロトコルです。SSL=HTTPSではなく、SSLを使用してHTTPの通信を暗号化したものがHTTPSになります。この仕組みを解説していきましょう。
SSLの必要性
フィッシング詐欺など、なりすましサイトが急増している現在、通信相手の認証は非常に重要な意味を持ちます。また、ユーザーにプライベートな情報(名前や住所、クレジット番号など)の入力を求めるような公開Webサーバを構築する場合には通信の暗号化が必須になりますので、SSLを使用して通信を暗号化(HTTPS化)する必要があります。
SSLの仕組み
SSLでは、公開鍵/秘密鍵方式によって通信相手の認証を行います。サーバが公開鍵をクライアントに与える際に、証明書によってサーバが信頼できるものかどうかを判断します。実際の通信内容の暗号化は共通鍵方式によって行います。
では、SSLがどのように通信相手を特定し、通信を暗号化しているのか見ていきましょう。SSLの中でも一般的なHTTPSの通信は以下の流れで行われます。
- クライアントからSSL接続(暗号化通信)の要求
- サーバからサーバ証明書(電子証明書)を送付。証明書には公開鍵が付与されている
- クライアントが通信暗号化用共通鍵を生成し、サーバから受け取った公開鍵で暗号化してサーバに送信する
- サーバ側の秘密鍵にて復号化し、暗号化通信用の共通鍵を取り出し、暗号化通信セッションが確立される。以後のデータ通信は共通鍵にて暗号化する
2の証明書とは、「このサイト(サーバ)は認証局(Certification Authority)が認めた、信頼性のあるサイトである」ということを証明するものです。この証明書によって、クライアントは接続先のサーバが信頼できるかどうか判断できるので、サーバのなりすましを防げます。
証明書について
証明書はITU-T*のX.509で定義されています。証明書自体は、公開鍵やサーバの情報が正しいことを証明する機能でしかありません。では、証明書によってどのようになりすましを防ぐのでしょうか。
例えば、はじめて会った人と名刺交換する場合をイメージしてみましょう。このとき、もらった名刺から相手がどういう人なのか判断します。しかし、名刺は自分で作れてしまうので、本当にその肩書や名前が正しいのかはお互いに分かりません。一方、交換した名刺が、警察や市役所など信用できる第三者によって発行されたものであった場合はどうでしょうか。この名刺の例のように、証明書とは、内容は同様のものであっても、どこで発行されたものであるかが重要になります。証明書を発行する、信頼できる機関が認証局であり、ここに発行してもらうことでなりすましを防げます。
証明書にはサーバ証明書とクライアント証明書がありますが、サーバがクライアントを認証する後者はほとんど利用されていません。
証明書発行手順
証明書は以下の順で発行します。
- 証明書をインストールするWebサーバで秘密鍵を作成
- Webサーバ側で認証局に提出する署名リクエスト(CSR:Certificate Signing Request)を作成
- 認証局へCSRを提出
- 認証局がCSRに署名を行い、証明書を作成*
- サーバへ証明書を送信
- サーバへ証明書をインストール
認証局について
認証局とは、証明書を発行する機関です。証明書の信頼性は認証局の信頼性に依存します。認証局には、ルート証明書を保有している「ルート証明機関」と、ルート証明書を保有しない「中間証明機関」があります。また、プライベート認証局で自己署名することで、自分で証明書を発行することもできます。
ルート証明機関
ルート証明機関は、例えば国の機関や警察のようなもので、常に正しいと見なすことになっています。ルート証明機関の証明書には、その認証機関自身の署名がなされています*。
またWebブラウザには、ある一定条件をクリアしたルート証明機関の証明書が標準でインストールされています。
中間証明機関
中間証明機関とは、国や警察が認めた機関といえます。上位のルート証明機関による認証書の発行を受けた認証機関を指します。
パブリック認証局とプライベート認証局
認証局には、パブリック認証局とプライベート認証局とがあります。パブリック認証局は、前述したルート証明機関や中間証明機関のようにワールドワイドに通用する認証局を指します。
一方プライベート認証局は、企業内などでの運営など、ごく限られた範囲でのみ通用する認証局と考えた方がよいでしょう。プライベート認証局は、いわば個人経営の店のようなもので、この機関が実際に信頼できる機関であるかどうかは分かりません。そのため、発行された証明書も信頼性が低くなります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このページで出てきた専門用語
ITU-T
International Telecommunication Union-Telecommunication Standardization Sector。国際連合の下位機関ITU(Internat ional Telecommunication Union、国際電気通信連合)の電気通信標準化部門。15の研究委員会(SG)が技術、運用、料金などの研究を行い、国際通信の標準化を進めている。
認証局がCSRに署名を行い、証明書を作成
証明書は、認証局によって独立したシリアルが付与される。同内容のCSRを同じ認証局に複数渡しても、まったく内容の異なる証明書が発行される。これによって、証明書の唯一性が保たれる。
その認証機関自身の署名がなされています
このような証明書を「自己署名(Self-Sign)された証明書」と呼ぶ。
関連記事
- SolarisからIPv6ルーターのようにRAを配信する
- Solstice Backup 7.1によるディスクバックアップ
- ディスクデバイス名の調査方法
- 夜間のシステム自動停止と自動起動
- NISマスターサーバ情報へのアクセス制限
- 重要データを任意のHDDへ定期的にバックアップ
- ログファイルのローテーション
- SUIDとは
- シェルスクリプトによる特定ファイルのバックアップ
- 9個以上のディスクスライス作成
- bashが起動時に実行するファイル
- acctcomコマンドによる終了ステータスの確認
- 電源制御キーの役割と無効化
- 「load average」によるCPU負荷の確認
- FTP利用でのファイル/ディレクトリの属性変更
- UFS loggingによるエラーと復旧方法
- ALOMにおけるSC用ユーザーの確認とパスワード変更
- PostgreSQLのテーブルデータをファイルへコピーする方法
- sotrussやapptraceによる実行コマンドのトレース
- TCP遅延肯定応答タイマーのタイムアウト値の変更
- 複数のマシンで効率的にシャットダウンする方法
- WWW::MechanizeモジュールによるWebアクセスの自動化
- IPv6アドレスの自動生成による不具合解消法
- キャッシュファイルを利用したNFSマウント
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.