Вопрос

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

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

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

Это было полезно?

Решение

Окей, чувак, кажется, я только что это понял.

Как я сказал выше, ключевым моментом является то, что сертификат не имеет значения, если он сгенерирован с помощью алгоритма, поддерживающего 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.

Другие советы

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

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

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

Я думаю, что ты ищешь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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top