web-dev-qa-db-ja.com

AES-NIを使用するようにTomcat 7 SSLを構成するにはどうすればよいですか?

私のサーバーにはAES-NIがあり、Tomcat 7でこれを利用したいのですが、それを実現する方法や、どこから探し始めればよいのか本当にわかりません。私はTomcatの管理に精通しており、Tomcatが提供するさまざまなコネクタを理解しています。 TomcatはCentOS 6.3とOracle Java 7 update 15。

ここに私の質問のいくつかがあります。

  1. どのSSL暗号スイートがAES-NIの恩恵を受けるでしょうか?
  2. Oracle Java 7 update 15で有効にできますか?
  3. Apache APRとopensslに基づくTomcatネイティブコネクタを使用している場合、それをオンにするために何をする必要がありますか?
  4. AES-NIはSSLパフォーマンスを大幅に向上させますか?
3
ams

最後の質問にお答えしましょう。いいえ、AES-NIがSSLパフォーマンスを大幅に向上させることはありません。 AES-NI 命令を持つCPUは、データを暗号化できますこれらの命令を使用せずに 120 MB /秒を超える速度(おそらく、200 MB /秒を超える速度)サーバー)、つまり100 MBit/sイーサネットが提供できる量の10(または20)倍以上。これに対応して、AESのハードウェア実装が非常に効率的であり、最高の状態でCPUの節約を10%(または5%)未満にすることが期待できます。それは「重要」ではありません。 Tomcatを使用してデータを処理しているので、AESの暗号化コストがサーバーでさえ検出可能であることを真剣に疑っています。確かに、AES-NIを使用すると、プロセッサは15倍高速に暗号化できますが、暗号化はすでにCPUのごくわずかな量しか使用していないので、何がポイントでしょうか。

多く引用されているデータポイントは、Googleが Gmailをサイト全体のSSLに切り替えた のときに言ったものです。CPU負荷のわずかな+ 1%の増加を測定しました。もちろん、影響はサイトの種類や各リクエストの処理量によって異なりますが、次の点に注意してください:SSLは安価です。それをより安くすることは途方もない利益を提供しません。

ここで、他の質問については、次のすべてが当てはまる場合、AES-NI命令を使用するAESの実装を(ユーザー側での構成を必要とせずに)自動的に選択する必要があります。

  • CPUはAES-NI命令をサポートしています。
  • (SSLで使用される)AESの実際の実装は OpenSSL です。
  • OpenSSLのそのバージョンは1.0.1以降です。

したがって、mod_ssl(Apacheの場合)の背後でTomcatを使用する場合andローカルのOpenSSLライブラリが十分に新しい場合、AES-NIのメリットはすでに得られています。 Tomcat自体でSSLを実行する(したがってJavaの内部暗号化に依存している)場合、おそらくいくつかのJavaを実行するコードnot AESからの利点)になる可能性があります-NI-しかし、これは調査に値するでしょう(つまり、ベンチマークです)私の意見では、それはとにかく測定可能な違いをもたらさないので、要点はちょっと気がかりです。

2
Tom Leek