3

Debian 6.0.7 の Jetty 6 + Open JDK 7 で Web アプリケーションを実行しています。クライアントが HTTPS 接続を開始するときに、SSLv3.0 ハンドシェイクではなく、TLS ハンドシェイクを受け入れるセキュリティ要件があります。

私の jetty.xml で、プロトコルを TLS に設定しました。

<New class="org.mortbay.jetty.security.SslSocketConnector">
    <Set name="protocol">TLS</Set>
    ...

この構成では、Web サーバーは引き続き SSLv3.0 ハンドシェイクを受け入れるように見えます。これは、「sslscan」ツールと「curl -sslv3 -kv {host}」の実行で確認されています。

TLS ハンドシェイクのみを受け入れるように Jetty を構成することは可能ですか? 必要に応じて、Jetty のバージョンをアップグレードしたいと考えています。

4

2 に答える 2

1

Jetty 6 の場合、次のように、SSLv3 を削除するオーバーライドされた SslSelectChannelConnector を作成することもできます。

package com.mycompany;

import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

import javax.net.ssl.SSLEngine;

import org.mortbay.jetty.security.SslSelectChannelConnector;

public class SslSelectChannelConnectorNoSsl3 extends SslSelectChannelConnector {

  @Override
  protected SSLEngine createSSLEngine() throws IOException {
    SSLEngine engine = super.createSSLEngine();
    Set<String> protocols = new HashSet<String>(Arrays.asList(engine.getEnabledProtocols()));
    protocols.removeAll(Arrays.asList("SSLv2Hello","SSLv3"));
    engine.setEnabledProtocols(protocols.toArray(new String[protocols.size()]));
    return engine;
  }

}

次に、次のように、jetty.xml でそのコネクタを指定します。

<Call name="addConnector">
 <Arg>
   <New class="com.mycompany.SslSelectChannelConnectorNoSsl3">
   ...
   </New>
 </Arg>
</Call>  
于 2014-11-14T22:17:41.573 に答える