Pergunta

Eu estou tentando criar um certificado auto-assinado para uso com Apache Tomcat 6. Cada certificado eu posso fazer sempre resulta no navegador conectando com AES-128. O cliente gostaria de me demonstrar que eu posso criar uma conexão em AES-256.

Eu tentei keytool e openssl de java. Eu tentei com uma variedade de parâmetros, mas não consigo especificar nada sobre o tamanho da chave, apenas o tamanho de assinatura.

Como posso obter a conexão do navegador-tomcat para usar AES-256 com um certificado auto-assinado?

Foi útil?

Solução

Okie doke, eu acho que eu só descobri isso.

Como eu disse acima, o bit chave do conhecimento é que o certificado não importa, contanto que é gerada com um algoritmo que suporta criptografia AES de 256 bits (por exemplo, RSA). Só para ter certeza de que estamos na mesma página, para o meu teste, eu gerado meu cert auto-assinado usando o seguinte:

keytool -genkey -alias tomcat -keyalg RSA

Agora, você tem que ter certeza que sua implementação Java em seu servidor suporta AES-256, e este é o pouco complicado. Eu fiz o meu teste em uma caixa OS X (OS 10.5), e quando eu verifiquei para ver a lista de cifras que ele suportados por padrão, AES-256 não estava na lista, que é por isso que usar que cert I gerado acima só foi criar uma conexão AES-128 entre o meu navegador e Tomcat. (Bem, tecnicamente, TLS_RSA_WITH_AES_256_CBC_SHA não estava na lista - que é a cifra que deseja, de acordo com esta lista JDK 5 .)

Para completar, aqui está o curta Java aplicativo que eu criei para verificar cifras suportados é minha caixa:

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);
    }
  }
}

Acontece que JDK 5, que é o que esta caixa OS X tem instalado por padrão, precisa do "Jurisdição Força ilimitado arquivos de diretiva" instalado para dizer Java que é OK para usar os níveis de criptografia de alto-bit; você pode encontrar esses arquivos aqui (rolagem para baixo e olhar para o topo da " outros seção downloads"). Eu não tenho certeza de improviso se JDK 6 necessidades a mesma coisa feita, mas os mesmos arquivos de política para JDK 6 estão disponíveis aqui , assim que eu supor que ele faz. Descompacte o arquivo, leia o README para saber como instalar os arquivos onde eles pertencem, e, em seguida, verificar seus cifras suportados novamente ... Eu aposto AES-256 é agora na lista.

Se for, você deve ser de ouro; basta reiniciar o Tomcat, conectar a sua instância SSL, e eu aposto que agora você vai ver uma conexão AES-256.

Outras dicas

danivo, desde que cert do servidor é capaz de criptografia AES, o nível de criptografia entre o navegador eo servidor é independente do cert em si - que nível de criptografia é negociado entre o navegador eo servidor. Em outras palavras, o meu entendimento é que o certificado não especifica o nível de criptografia, apenas o tipo de criptografia (por exemplo, AES). Consulte este link (PDF) para a verificação deste, e como os revendedores cert upsell " 256-bit-capazes" certs apesar do cert não ser o que determina a capacidade de 256-bit.

Então você está muito bem com o cert você tem que suporta AES-128 - e eles chave é descobrir como obter Tomcat para suportar AES-256 (uma vez que a maioria, se não todos, os principais navegadores certamente apoiá-lo ).

A força da conexão SSL é negociado entre o navegador eo servidor (ou o que está fornecendo SSL). Pode ser o seu navegador pedir uma cifra mais fraca. Será que já viu uma conexão de 256 AES SSL neste navegador? AES-128 ainda é um algoritmo muito seguro, a menos que eles têm algo que eles querem proteger de fora de linha (pense: supercomputador força bruta de geração de 2 ^ 128 teclas wikipedia ) ataque, de 128 bits deve ser fino. Se eles realmente precisam que muita proteção, eles provavelmente deve estar usando uma solução mais estável para acesso a dados de um site, um túnel ssh seguro para o seu servidor é à prova de balas (você pode dizer-lhes que podem ter a sua 256-bit AES e 4096-bit RSA também), ou uma VPN, dependendo implementação.

Eu acho que o que você está procurando http: // www .sslshopper.com / artigo-how-to-disable-fracos-cifras-and-SSL-2-in-tomcat.html e http://docs.oracle.com /javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA

Dependendo se você quer uma boa segurança e certificação de compatibilidade ou PCI.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top