2013-10-09 3 views
4

Я переношусь на Tomcat 7 и подумал, что самое время проверить шифры, которые я использую для SSL-соединений. Я понял, что поставил их около 5 лет назад и с тех пор не думал о них.Tomcat 7 Ciphers For High Security

В моем списке отсутствуют важные шифры? Включает ли он все, что я не должен?

Мое веб-приложение - это тот, где важна безопасность, поэтому предпочтителен ошибочный подход. Требуется поддержка IE8, а также международные пользователи (но не Северная Корея).

ciphers="TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, 
TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, 
SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA" 

ответ

3

Короткая версия:

  • Добавить TLS_RSA_WITH_AES_128_CBC_SHA256
  • Добавить TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
  • Добавить TLS_DHE_DSS_WITH_AES_128_CBC_SHA25
  • уронить шифров 3DES, если у вас нет каких-либо клиентов XP.

Более длинное описание:

Cipher сьюты поддерживаются варьируется от JVM основной версии для основной версии, так и между производителями. Проверьте документы JVM для списка поддерживаемых наборов шифров или используйте что-то в этих строках, чтобы перечислить их.

package org.apache.markt; 

import java.security.NoSuchAlgorithmException; 
import java.security.Security; 
import java.util.Set; 
import javax.crypto.Cipher; 
import javax.net.ssl.SSLServerSocketFactory; 

public class CryptoInfo { 
    public static void main(String[] args) { 
     try { 
      Set<String> algorithms = Security.getAlgorithms("Cipher"); 
      for(String algorithm: algorithms) { 
       int max; 
       max = Cipher.getMaxAllowedKeyLength(algorithm); 
       System.out.printf("%-22s: %dbit%n", algorithm, 
         Integer.valueOf(max)); 
      } 
     } catch (NoSuchAlgorithmException e) { 
      e.printStackTrace(); 
     } 

     SSLServerSocketFactory f = 
      (SSLServerSocketFactory) SSLServerSocketFactory.getDefault(); 
     String[] cs = f.getSupportedCipherSuites(); 
     for (String c : cs) { 
      System.out.println(c); 
     } 

    } 
} 

Возможно, вы не хотите, чтобы какие-либо из наборов шифров KRB5 удаляли их. Вы также можете удалить TLS_EMPTY_RENEGOTIATION_INFO_SCSV (набор фиктивных шифров, используемый для указания того, поддерживается ли безопасное повторное согласование), если они есть. Удалите все, что упоминает NULL, anon, export или DES как небезопасное. У RC4 есть некоторые проблемы, поэтому вы, вероятно, захотите их удалить. IE8 не поддерживает ECDH, поэтому удалите их. IE8 на XP не поддерживает ECDHE, поэтому вы можете отказаться от них.

Который выйдет из списка у вас есть выше плюс: TLS_RSA_WITH_AES_128_CBC_SHA256 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 TLS_DHE_DSS_WITH_AES_128_CBC_SHA256

Вы, вероятно, следует думать о сбросив шифры 3DES из списка тоже. Проблема в том, что IE8 на XP не поддерживает AES (IE8 на Vista тоже делает). Таким образом, вы, возможно, не сможете это сделать.

Вы можете найти эти ссылки полезны:

http://www.g-sec.lu/sslharden/SSL_comp_report2011.pdf

https://www.ssllabs.com/downloads/SSL_TLS_Deployment_Best_Practices_1.3.pdf

Смежные вопросы