3 votes

SSL fort avec Tomcat 6

J'essaie de créer un certificat auto-signé à utiliser avec Apache Tomcat 6. Tous les certificats que j'ai pu créer ont toujours pour résultat que le navigateur se connecte avec AES-128. Le client aimerait que je lui démontre que je peux créer une connexion à AES-256.

J'ai essayé java's keytool et openssl. J'ai essayé avec une variété de paramètres, mais je n'arrive pas à spécifier quoi que ce soit sur la taille de la clé, juste la taille de la signature.

Comment puis-je faire en sorte que la connexion navigateur-tomcat utilise AES-256 avec un certificat auto-signé ?

12voto

delfuego Points 9288

Okie doke, je crois que je viens de trouver la solution.

Comme je l'ai dit plus haut, l'essentiel est que le certificat n'a pas d'importance, tant qu'il est généré avec un algorithme qui prend en charge le cryptage AES 256 bits (par exemple, RSA). Pour être sûr que nous sommes sur la même longueur d'onde, pour mes tests, j'ai généré mon certificat auto-signé en utilisant ce qui suit :

keytool -genkey -alias tomcat -keyalg RSA

Vous devez maintenant vous assurer que votre implémentation Java sur votre serveur prend en charge AES-256, et c'est là que le bât blesse. J'ai effectué mes tests sur une machine OS X (OS 10.5), et lorsque j'ai vérifié la liste des algorithmes de chiffrement pris en charge par défaut, AES-256 n'était PAS sur la liste, ce qui explique pourquoi l'utilisation du certificat que j'ai généré ci-dessus n'a créé qu'une connexion AES-128 entre mon navigateur et Tomcat. cette liste de JDK 5 .)

Pour être complet, voici la petite application Java que j'ai créée pour vérifier les chiffres pris en charge par ma boîte :

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

Il s'avère que le JDK 5, qui est installé par défaut sur cette machine OS X, a besoin des "Unlimited Strength Jurisdiction Policy Files" pour indiquer à Java qu'il est possible d'utiliser les niveaux de cryptage supérieurs. vous trouverez ces fichiers ici (faites défiler la page et regardez en haut de la section "Autres téléchargements"). Je ne suis pas sûr que le JDK 6 ait besoin de la même chose, mais les mêmes fichiers de stratégie pour le JDK 6 sont disponibles ici donc je suppose que c'est le cas. Décompressez ce fichier, lisez le README pour voir comment installer les fichiers à leur place, puis vérifiez à nouveau les algorithmes de chiffrement supportés... Je parie que AES-256 est maintenant sur la liste.

Si c'est le cas, vous devriez être tranquille ; redémarrez simplement Tomcat, connectez-vous à votre instance SSL, et je parie que vous verrez maintenant une connexion AES-256.

1voto

delfuego Points 9288

Danivo, tant que le certificat du serveur est capable d'effectuer un chiffrement AES, le niveau de chiffrement entre le navigateur et le serveur est indépendant du certificat lui-même - ce niveau de chiffrement est négocié entre le navigateur et le serveur. En d'autres termes, j'ai cru comprendre que le certificat ne spécifie pas le niveau de cryptage, mais seulement la méthode de cryptage. tipo de cryptage (par exemple, AES). Voir ce lien (PDF) pour vérifier cela, et comment les revendeurs de certificats vendent des certificats "compatibles 256 bits" alors que le certificat n'est pas ce qui détermine la capacité 256 bits.

Vous pouvez donc vous contenter du certificat que vous avez et qui prend en charge AES-128. L'essentiel est de trouver comment faire en sorte que Tomcat prenne en charge AES-256 (puisque la plupart des principaux navigateurs, sinon tous, le font).

1voto

alif Points 559

La force de la connexion SSL est négociée entre le navigateur et le serveur (ou ce qui fournit le SSL). Il se peut que le navigateur demande un chiffrement plus faible. Ont-ils déjà vu une connexion SSL 256-AES sur ce navigateur ? AES-128 est toujours un algorithme très sûr, donc à moins qu'ils aient quelque chose qu'ils veulent protéger de l'extérieur (pensez à un superordinateur générant 2^128 clés par force brute). wikipedia ), une attaque à 128 bits devrait suffire. S'ils ont vraiment besoin d'une telle protection, ils devraient probablement utiliser une solution plus stable pour l'accès aux données qu'un site web, un tunnel ssh sécurisé vers leur serveur est à l'épreuve des balles (vous pouvez leur dire qu'ils peuvent avoir leur AES 256 bits et leur RSA 4096 bits aussi), ou un vpn selon l'implémentation.

1voto

kkron Points 485

Je pense que ce que vous cherchez est http://www.sslshopper.com/article-how-to-disable-weak-ciphers-and-ssl-2-in-tomcat.html et http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA

Selon que vous souhaitez une bonne sécurité et une bonne compatibilité ou une certification PCI.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X