Question

J'essaie de créer un certificat auto-signé à utiliser avec Apache Tomcat 6. Chaque certificat que je peux créer a toujours pour résultat que le navigateur se connecte avec AES-128. Le client souhaite que je démontre que je peux créer une connexion à AES-256.

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

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

Était-ce utile?

La solution

Okie doke, je pense que je viens de comprendre cela.

Comme je l’ai dit plus haut, le principal élément de connaissance est que le certificat n’importe pas, tant qu’il est généré avec un algorithme prenant en charge le cryptage AES 256 bits (RSA, par exemple). Juste pour m'assurer que nous sommes sur la même page, pour mes tests, j'ai généré mon certificat auto-signé à l'aide des éléments suivants:

keytool -genkey -alias tomcat -keyalg RSA

Maintenant, vous devez vous assurer que votre implémentation Java sur votre serveur prend en charge AES-256, ce qui est compliqué. J'ai fait mes tests sur une boîte OS X (OS 10.5), et quand j'ai vérifié la liste des chiffrements pris en charge par défaut, AES-256 n'était PAS dans la liste, c'est pourquoi l'utilisation de ce certificat que j'ai généré ci-dessus était seulement créer une connexion AES-128 entre mon navigateur et Tomcat. (Eh bien, techniquement, TLS_RSA_WITH_AES_256_CBC_SHA n'était pas sur la liste - c'est le chiffrement que vous voulez, selon cette liste JDK 5 .)

Pour être complet, voici la courte application Java que j'ai créée pour vérifier les codes de chiffrement pris en charge de 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 JDK 5, qui correspond à ce que cette machine OS X a installé par défaut, requiert les "Fichiers de stratégie juridictionnelle de force illimitée". installé afin de dire à Java qu'il est correct d'utiliser les niveaux de cryptage à bits plus élevés; vous pouvez trouver ces fichiers ici (faites défiler vers le bas et regardez en haut de la fenêtre ". ; Autres téléchargements " section). Je ne suis pas sûr que JDK 6 ait besoin de la même chose, mais les mêmes fichiers de politique pour JDK 6 sont disponibles ici , alors je suppose que oui. Décompressez ce fichier, lisez le fichier LISEZMOI pour voir comment installer les fichiers auxquels ils appartiennent, puis vérifiez à nouveau les chiffrements pris en charge ... Je parie que AES-256 est maintenant dans la liste.

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

Autres conseils

danivo, tant que le certificat du serveur est capable du cryptage AES, le niveau de cryptage entre le navigateur et le serveur est indépendant du cert lui-même - ce niveau de cryptage est négocié entre le navigateur et le serveur. En d’autres termes, si j’ai bien compris, le certificat ne spécifie pas le niveau de cryptage, mais uniquement le type du cryptage (par exemple, AES). Consultez ce lien (PDF) pour en savoir plus et pour savoir comment les revendeurs de certifient leurs ventes en amont. ; Capacité 256 bits " certs alors que le certificat n’est pas ce qui détermine la capacité 256 bits.

Vous êtes donc satisfait du certificat que vous avez qui prend en charge AES-128 - et la clé est de savoir comment faire en sorte que Tomcat prenne en charge AES-256 (car la plupart des navigateurs principaux, sinon tous, le supportent certainement. ).

La force de la connexion SSL est négociée entre le navigateur et le serveur (ou tout ce qui fournit SSL). C'est peut-être leur navigateur qui demande un chiffre plus faible. Ont-ils déjà vu une connexion SSL 256-AES sur ce navigateur? AES-128 est toujours un algorithme très sécurisé. Par conséquent, à moins d’avoir quelque chose à protéger hors ligne (pensez: force brute du supercalculateur générant 2 ^ 128 clés wikipedia ), 128 bits devrait suffire. S'ils ont vraiment besoin de cette protection, ils devraient probablement utiliser une solution plus stable pour l'accès aux données qu'un site Web, un tunnel sécurisé SSH vers leur serveur est à toute épreuve (vous pouvez leur dire qu'ils peuvent avoir leurs fichiers AES 256 bits et 4096 bits). RSA aussi), ou un vpn en fonction de la mise en œuvre.

Je pense que ce que vous cherchez, c'est http: // www .sslshopper.com / article-comment-activer-faible-chiffrements-faibles-et-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 sécurité et une compatibilité compatibles ou une certification PCI.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top