現場にキく、Webシステムの問題解決ノウハウ 第3回
Webの表示速度を遅くする
「SSLハンドシェイク」とは
@IT編集部
2010/2/9
本連載は、日立製作所が提供するアプリケーションサーバ「Cosminexus」の開発担当者へのインタビューを通じて、Webシステムにおける、さまざまな問題/トラブルの解決に効くノウハウや注意点を紹介していく。現在起きている問題の解決や、今後の開発のご参考に(編集部)
知っていますか? SSLハンドシェイク
今回の主な内容 |
Webアプリケーションで提供するWebページにSSLを適用した場合、SSLでは通信相手の認証/通信内容の暗号化などの負荷の高い処理が実行されるため、WebページのWebブラウザに表示される速度が遅くなることがある。この現象は、SSLセッションを再利用して、「SSLハンドシェイク」(上記の認証/暗号化を含んだ一連の処理)を簡略化することで、解決できる場合がある。
今回は、それらの問題を解決してWebブラウザの表示速度を向上させる方法について話をうかがったので、その内容を紹介する。
現象の見え方
今回は、以下の問題についての話だ。
Webアプリケーションで提供するWebページにSSLを適用した場合、Webブラウザ上への表示速度が遅い。 |
SSLを理解するのが、問題解決への最短距離
こういった現象は、読者も日常的に見ていることだろう。その原因を考えるうえで、とても基本的なことから確認してみたい。
■ SSLとは
SSLとは、インターネット/イントラネットで発生し得る「盗聴」「改ざん」「なりすまし」といったトラブルを防止するための技術だ。SSLでは、これらのトラブルを防止するために、アプリケーションデータを送受信する前に、SSLハンドシェイクと呼ばれる通信処理をWebブラウザ(クライアント)/Webサーバ間で実行する。SSLハンドシェイクでは主に、以下に示す処理を実行する。
■ SSLハンドシェイクでの問題点
SSLハンドシェイクの処理イメージを次の図に示そう。
![]() |
| 図1 SSLハンドシェイクの処理イメージ |
- アプリケーションデータの暗号化に利用するアルゴリズムをクライアント/サーバ間で決定。
- CAから発行された証明書を利用して、クライアント/サーバの認証を行う
- 1.のアルゴリズムに基付き、暗号鍵を生成
図1の赤い矢印の個所が上記のリスト1、2の処理に該当する。ここでは、アプリケーションデータの暗号化アルゴリズムを決定するための処理、および、証明書の送受信/証明書の検証によるクライアント/サーバ間の認証を実行するため、CPU処理時間と通信量を多く要するコストの高い処理になっており、SSLでの通信性能に最も影響する。
そのため、Webアプリケーションで提供するWebページにSSLを適用した場合、Webページのブラウザに表示される速度が遅くなることがあるという。
SSLセッション/アクセラレータを利用しよう
この問題の解決方法として、2つ考えられる。1つはSSLセッションを再利用する方法だ。
SSLセッションは、一度SSLハンドシェイクが完了した状態を意味し、一意の識別子(セッションID)で特定可能な情報だ。SSLセッションを再利用して、2回目以降のSSLハンドシェイクを簡略化することにより、アプリケーションデータの暗号化アルゴリズムを決定するための処理、および、証明書の送受信/証明書の検証によるクライアント/サーバ間の認証を省略できる。その結果、Webアプリケーションで提供するWebページにSSLを適用した場合のWebブラウザ上への表示速度を向上できる。
また、SSLアクセラレータを利用することにより、Webサーバに掛かっているSSL関連処理の負荷を軽減できる。
■ 【1】SSLセッションを再利用する場合
現在多くのWebブラウザ、および、WebサーバではSSLセッションを再利用することにより、2回目以降のSSLハンドシェイクを簡略化し、SSLによる通信性能の向上を図ることが可能になっている。
例えばアプリケーションサーバとしてCosminexusを使っている場合、SSLセッションを再利用することにより、SSLハンドシェイクの中の以下の処理をスキップできるという。
- アプリケーションデータの暗号化に利用するアルゴリズムをクライアント/サーバ間で決定
- CAから発行された証明書を利用して、クライアント/サーバの認証を行う
SSLセッションを再利用する場合のSSLハンドシェイクの処理のイメージを次の図に示そう。
![]() |
| 図2 SSLセッションを再利用する場合のSSLハンドシェイクの処理のイメージ |
SSLセッションを再利用するためには、Hitachi Web Serverのコンフィグファイル(httpsd.conf)に以下に示す設定を行う必要があるという。なお、Windows版とUNIX版では、Hitachi Web Serverのプロセス構造が異なるため、設定方法が一部異なるそうだ。
- Windows版の場合
- SSLSessionCacheSize SSLセッションを管理するキャッシュのサイズ(単位:バイト)
- SSLSessionCacheTimeout SSLセッションの有効期間(単位:秒)
- UNIX版の場合
SSLセッションを管理するためのサーバ(gcacheサーバ)を利用して、SSLセッションを管理するため、Windows版と同様の設定に加えて、(gcacheサーバ)の設定を行う- SSLCacheServerPath gcacheサーバヘのパス名
- SSLCacheServerPort gcacheサーバのポート番号
■ 【2】SSLアクセラレータを利用する場合
SSLアクセラレータとは、SSL関連の処理(SSLハンドシェイク、および、アプリケーションデータの暗号/復号)を高速化するための専用ハードウェアだ。SSLアクセラレータを利用することにより、Webサーバに掛かっているSSL関連処理の負荷を軽減できる。
SSLアクセラレータを利用した場合のシステム構成を次の図に示そう。
![]() |
| 図3 SSLアクセラレータを利用した場合のシステム構成 |
SSLを適用する場合、速度とのトレードオフを考慮
今回は、SSLセッションを再利用する/SSLアクセラレータを利用することで、SSLによる通信性能を向上させる手順について説明した。
Webアプリケーションで提供するWebページにSSLを適用する場合には、今回の説明内容を参考にして、SSLによる通信性能の向上を図るのは、いかがだろうか。
■ @IT関連記事
| ApacheのSSL対応化と環境設定 連載:ApacheによるWebサーバ構築(4) ApacheでSSLを使ったWebサイトを構築するには、幾つかの方法がある。今回はその方法と最小限の環境設定を紹介 「Linux Square」フォーラム 2001/4/17 |
| SSLによる安全なWebサイト作り 連載:ApacheによるWebサーバ構築(12) アクセス制限では盗聴や改ざんに対応できない。今回は、SSLを用いてより信頼性の高いWebサイトを構築する方法を紹介する 「Linux Square」フォーラム 2002/1/11 |
| Java Solution全記事一覧 |
TechTargetジャパン
- 並列分散処理の常識をHadoopファミリから学ぶ (2012/2/8)
並列分散処理の課題やHadoopの長所/短所、そして短所を補うHadoop関連プロジェクトの構成や概要などを簡単に紹介 - WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ - 新キャラ登場!スクラムやるならRedmineとALMinium (2011/12/26)
「黒板を“かんばん”にしてたら先生に怒られた(T_T)」「管理はPC内でやればいいのよ」「承知しました」
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -



