6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SSLアクセラレータ導入前調査

Posted at

SSLアクセラレータとは

SSL関連の処理(SSLハンドシェイク、および、アプリケーションデータの暗号/復号)を高速化するための機器のこと。

SSLアクセラレータの導入目的

・WEBサーバのSSL負荷軽減
・アプリケーション側のSSL対応コスト削減
・WEBサーバのSSL対応コスト削減

参考:SSLアクセラレータの必要性
http://www.fujitsu.com/jp/products/network/security-bandwidth-control-load-balancer/ipcom/material/data/ssl/index.html

前提条件

インフラ環境はクラウド化していない。物理サーバ構成。

SSLアクセラレータの選定

・アプライアンス型
・自作
(※カード型は各WEBサーバに設置が必要となるため除外)

アプライアンス型

ベンダーが提供するSSLアクセラレータ専用機器。
SSLアクセラレータとして必要な機能がすべて搭載しており、ハード構成も特化したものとなっているため大量のトラフィックに対しても安心。
また、機器に対して保守もあるため運用面で安心。

機器候補

・日立ソリューションズ:ArrayAPVシリーズ
http://www.hitachi-solutions.co.jp/array/sp/apv/about.html
貸し出しサービスがあり、検証してから購入が可能

・セイコーソリューションズ:NetWiserシリーズ
http://www.seiko-sol.co.jp/products/loadbalancer/loadbalancer_lineup/loadbalancer_sx3840/

自作

Nginxなどオープンソースのリバースプロキシ機能とSSL対応モジュールを利用してSSLアクセラレータを構築する。
好きなハードウェアやミドルウェアを組み合わせることができるため、最低限の構成で始めることができ、今後の負荷状況に応じて柔軟に対応しやすい。
その反面、運用の負担が大きい。

参考記事
http://snickerjp.blogspot.jp/2015/03/nginx-ssl-accelerator.html

今回、本番環境、検証環境、別ネットワーク環境などSSLアクセラレータが分散かつ複数台必要となるため、できれば自作で進められるとコストパフォーマンスは良い。

SSLハンドシェルクの負荷対策

SSLハンドシェイクのコストは高い。通常のhttp通信に比べるとhttpsの通信はかなりコスト高となる。
その対策として2回目以降の通信はハンドシェイク処理を省略させるべく、SSLセッションを利用する。
SSLアクセラレータをスケールアウトする場合を考慮し、SSLセッションは共有化しておく。

共有化の方法の検討

方法1:サーバ内のセッションキャッシュを他サーバ同士で共有する

各SSLアクセラレータサーバに保有するSSLセッションキャッシュを他のアクセラレータサーバから参照し合う仕組み。
懸念点は、スケールアウトするほどセッションキャッシュの同期コストが高くなる。

参考:SSLセッションキャッシュを共有したいだけだった
https://speakerdeck.com/nojima/sslsetusiyonkiyatusiyuwogong-you-sitaidakefalseren-sheng-datuta
参考:細かすぎて伝わらないSSL/TLS (分散された Server の cache の共有)
https://techblog.yahoo.co.jp/infrastructure/ssl-session-resumption

方法2:SSLセッションキャッシュ共有の専用キャッシュサーバを用意する

1つのセッションキャッシュサーバに、全てのセッションをキャッシュさせて共有する。
懸念点は、セッションキャッシュサーバ自体の運用コストがかかること。
また、キャッシュサーバへのトラフィックが集中することで、キャッシュサーバ自身のスケールアウトが必要となった際に、キャッシュの同期について考慮が必要となる。

方法2は構成自体が複雑になるため、できれば方法1で進めたい。

別の方法:セッションチケットを利用

セッションチケットを利用すると、クライアント側にセッションをキャッシュさせることができる。
スマホに対応できない場合もあるという情報もあり要調査。

参考:細かすぎて伝わらないSSL/TLS (TLS Session Ticket 拡張(Transport Layer Security(TLS)Session Resumption without Server-Side State))
https://techblog.yahoo.co.jp/infrastructure/ssl-session-resumption

Amazon CloudFrontなどクラウドサービス環境ではセッションチケットに対応している場合もある。
インフラがAWSやAZULなどの環境下であれば悩みも少しは減るだろう。。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?