web-dev-qa-db-ja.com

Jetty9によるTLS_FALLBACK_SCSVのサポート

SSL Server Test @ SSL Labs でそのA +を取得しようとしています。ただし、「ダウングレード攻撃防止」テストに合格する方法がわかりません。

TLS_FALLBACK_SCSV

Linux Ubuntu 15.04(Vivid Vervet)で、OpenJDK8と一緒にJetty9.3.0.v20150612を実行しています。

hristo@test:~$ Java -version
openjdk version "1.8.0_45-internal"
OpenJDK Runtime Environment (build 1.8.0_45-internal-b14)
OpenJDK 64-Bit Server VM (build 25.45-b02, mixed mode)

JettyのSSL構成ドキュメント の指示を読み、それに従い、関連するXML構成ファイルを編集するために最善を尽くしました。何を試しても、「いいえ、TLS_FALLBACK_SCSVはサポートされていません」と表示されます。

次のコマンドを実行して、Jettyのhttpsモジュールとsslモジュールを有効にしました。

$ Java -jar start.jar --add-to-startd=https,ssl
INFO: ssl             initialised in ${jetty.base}/start.d/ssl.ini
INFO: https           initialised in ${jetty.base}/start.d/https.ini
INFO: Base directory was modified

私はバニラを変更していませんjetty.xmlまたはjetty-https.xmlそこで何を変更する必要があるのか​​わからないため。これが私の設定のために持っているものです:

start.ini

# added this to the bottom of start.ini
# TLS configuration
-Dhttps.protocols="TLSv1,TLSv1.1,TLSv1.2"
-Djdk.tls.client.protocols="TLSv1,TLSv1.1,TLSv1.2"
-Djdk.tls.ephemeralDHKeySize=2048

jetty-ssl-context.xml

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.Eclipse.org/jetty/configure_9_3.dtd">

<!-- ============================================================= -->
<!-- SSL ContextFactory configuration                              -->
<!-- ============================================================= -->
<Configure id="sslContextFactory" class="org.Eclipse.jetty.util.ssl.SslContextFactory">

  <!-- ===================== -->
  <!-- other default configs -->
  <!-- ===================== -->

  <Set name="IncludeCipherSuites">
    <Array type="String">
      <Item>TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384</Item>
      <Item>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</Item>
      <Item>TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384</Item>
      <Item>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</Item>
      <Item>TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA</Item>
      <Item>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</Item>

      <Item>TLS_DHE_RSA_WITH_AES_256_GCM_SHA384</Item>
      <Item>TLS_DHE_RSA_WITH_AES_128_GCM_SHA256</Item>
      <Item>TLS_DHE_RSA_WITH_AES_256_CBC_SHA</Item>
      <Item>TLS_DHE_RSA_WITH_AES_128_CBC_SHA</Item>
      <Item>TLS_DHE_RSA_WITH_AES_256_CBC_SHA256</Item>
      <Item>TLS_DHE_RSA_WITH_AES_128_CBC_SHA256</Item>

      <Item>TLS_RSA_WITH_AES_256_GCM_SHA384</Item>
      <Item>TLS_RSA_WITH_AES_128_GCM_SHA256</Item>
      <Item>TLS_RSA_WITH_AES_256_CBC_SHA256</Item>
      <Item>TLS_RSA_WITH_AES_128_CBC_SHA256</Item>
      <Item>TLS_RSA_WITH_AES_256_CBC_SHA</Item>
      <Item>TLS_RSA_WITH_AES_128_CBC_SHA</Item>
    </Array>
  </Set>
  <Set name="IncludeProtocols">
    <Array type="Java.lang.String">
       <Item>TLSv1</Item>
       <Item>TLSv1.1</Item>
       <Item>TLSv1.2</Item>
    </Array>
  </Set>
  <Set name="ExcludeCipherSuites">
    <Array type="String">
      <Item>SSL.*</Item>
      <Item>.*DES.*</Item>
      <Item>.*DSS.*</Item>
      <Item>.*KRB.*</Item>
      <Item>.*MD5.*</Item>
      <Item>.*NULL.*</Item>
      <Item>.*RC4.*</Item>
    </Array>
  </Set>
  <Set name="ExcludeProtocols">
    <Array type="Java.lang.String">
       <Item>SSL</Item>
       <Item>SSLv2</Item>
       <Item>SSLv2Hello</Item>
       <Item>SSLv3</Item>
    </Array>
  </Set>
  <Set name="renegotiationAllowed" type="boolean">false</Set>
  <Set name="useCipherSuitesOrder"><Property name="jetty.sslContext.useCipherSuitesOrder" default="true"/></Set>
</Configure>

他に何が欠けていますか? Jettyをもう少し設定する必要がありますか?どういうわけかJava 8を構成する必要がありますか?いくつかの特別なUbuntu構成を変更する必要がありますか?

3
Hristo

Javaにはまだ実装されていませんが、Java 9で計画されています。

更新については #JDK-8061798 をフォローできます。

4
Henning