Сильный SSL с Tomcat 6 - PullRequest
       40

Сильный SSL с Tomcat 6

3 голосов
/ 18 сентября 2008

Я пытаюсь создать самозаверяющий сертификат для использования с Apache Tomcat 6. Каждый сертификат, который я могу сделать, всегда приводит к соединению браузера с AES-128. Заказчик хотел бы, чтобы я продемонстрировал, что я могу создать соединение в AES-256.

Я пробовал использовать Java KeyTool и OpenSSL. Я пробовал с различными параметрами, но не могу указать ничего о размере ключа, только размер подписи.

Как мне получить соединение браузера-кота для использования AES-256 с самозаверяющим сертификатом?

Ответы [ 4 ]

12 голосов
/ 18 сентября 2008

О'кей, я только что понял это.

Как я уже говорил выше, ключевой момент знания состоит в том, что сертификат не имеет значения, если он генерируется с помощью алгоритма, который поддерживает 256-битное шифрование AES (например, RSA). Просто чтобы убедиться, что мы находимся на одной странице, для моего тестирования я сгенерировал свой самоподписанный сертификат, используя следующее:

keytool -genkey -alias tomcat -keyalg RSA

Теперь вы должны убедиться, что ваша реализация Java на вашем сервере поддерживает AES-256, и это сложный момент. Я провел тестирование на коробке с OS X (OS 10.5), и когда я проверил список шифров, которые он поддерживал по умолчанию, AES-256 в списке НЕ было, поэтому использовался только тот сертификат, который я генерировал выше. создание соединения AES-128 между моим браузером и Tomcat. (Ну, технически TLS_RSA_WITH_AES_256_CBC_SHA не было в списке - это именно тот шифр, который вам нужен, согласно этому списку JDK 5 .)

Для полноты вот короткое Java-приложение, которое я создал для проверки поддерживаемых шифров моего ящика:

import java.util.Arrays;
import javax.net.ssl.SSLSocketFactory;

public class CipherSuites {
  public static void main(String[] args) {
    SSLSocketFactory sslsf = (SSLSocketFactory) SSLSocketFactory.getDefault();
    String[] ciphers = sslsf.getDefaultCipherSuites();
    Arrays.sort(ciphers);
    for (String cipher : ciphers) {
      System.out.println(cipher);
    }
  }
}

Оказывается, что JDK 5, который установлен по умолчанию для этого блока OS X, требует установки «Файлов политики неограниченной юрисдикции», чтобы сообщить Java, что можно использовать более высокие уровни шифрования; Вы можете найти эти файлы здесь (прокрутите вниз и посмотрите вверху раздела «Другие загрузки»). Я не уверен, что JDK 6 нужно сделать то же самое, но те же файлы политики для JDK 6 доступны здесь , поэтому я предполагаю, что это так. Разархивируйте этот файл, прочитайте README, чтобы узнать, как установить файлы, к которым они принадлежат, а затем снова проверьте поддерживаемые шифры ... Держу пари, AES-256 теперь в списке.

Если это так, вы должны быть золотыми; просто перезапустите Tomcat, подключитесь к своему экземпляру SSL, и я уверен, что теперь вы увидите соединение AES-256.

1 голос
/ 09 апреля 2012

Я думаю, что вы ищете http://www.sslshopper.com/article-how-to-disable-weak-ciphers-and-ssl-2-in-tomcat.html а также http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA

В зависимости от того, хотите ли вы хорошую безопасность и совместимость или сертификацию PCI.

1 голос
/ 18 сентября 2008

Надежность SSL-соединения согласовывается между браузером и сервером (или любым другим устройством, предоставляющим SSL). Это может быть их браузер, запрашивающий более слабый шифр. Видели ли они когда-нибудь SSL-соединение 256 AES в этом браузере? AES-128 по-прежнему является очень безопасным алгоритмом, поэтому, если у них нет чего-то, что они хотят защитить от офлайновой атаки (представьте: грубая сила суперкомпьютера, генерирующая 2 ^ 128 ключей wikipedia ) атака, 128-битный должен подойти , Если им действительно нужна такая большая защита, им, вероятно, следует использовать более стабильное решение для доступа к данным, чем веб-сайт, так как безопасный ssh-туннель к их серверу является пуленепробиваемым (вы можете сказать им, что они могут иметь свои 256-битные AES и 4096-битные RSA тоже) или vpn в зависимости от реализации.

1 голос
/ 18 сентября 2008

danivo, поскольку сертификат сервера поддерживает шифрование AES, уровень шифрования между браузером и сервером не зависит от самого сертификата - этот уровень шифрования согласовывается между браузером и сервером. Другими словами, я понимаю, что сертификат не указывает уровень шифрования, только тип шифрования (например, AES). См. эту ссылку (PDF) для проверки этого и того, как реселлеры сертификатов продают сертификаты с 256-битной поддержкой, несмотря на то, что сертификат не является определяющим 256-битные возможности.

Таким образом, вы в порядке с сертификатом, который у вас есть, который поддерживает AES-128 - и они должны выяснить, как заставить Tomcat поддерживать AES-256 (поскольку большинство, если не все, основные браузеры, безусловно, поддерживают его ).

...