Domanda

Sto cercando di creare un certificato autofirmato da utilizzare con Apache Tomcat 6.Ogni certificato che posso ottenere risulta sempre nella connessione del browser con AES-128.Il cliente vorrebbe che dimostrassi che posso creare una connessione su AES-256.

Ho provato il keytool di Java e openssl.Ho provato con una varietà di parametri, ma non riesco a specificare nulla sulla dimensione della chiave, solo la dimensione della firma.

Come posso ottenere la connessione browser-tomcat per utilizzare AES-256 con un certificato autofirmato?

È stato utile?

Soluzione

Okie doke, penso di averlo appena capito.

Come ho detto sopra, la cosa fondamentale da sapere è che il certificato non ha importanza, purché venga generato con un algoritmo che supporti la crittografia AES a 256 bit (ad esempio RSA).Giusto per assicurarmi che siamo sulla stessa lunghezza d'onda, per i miei test ho generato il mio certificato autofirmato utilizzando quanto segue:

keytool -genkey -alias tomcat -keyalg RSA

Ora devi assicurarti che la tua implementazione Java sul tuo server supporti AES-256, e questa è la parte complicata.Ho eseguito i test su un sistema OS X (OS 10.5) e quando ho controllato per vedere l'elenco dei codici supportati per impostazione predefinita, AES-256 NON era nell'elenco, motivo per cui utilizzare solo il certificato che ho generato sopra era creando una connessione AES-128 tra il mio browser e Tomcat.(Beh, tecnicamente, TLS_RSA_WITH_AES_256_CBC_SHA non era nell'elenco: questo è il codice che desideri, secondo questo elenco JDK 5.)

Per completezza, ecco la breve app Java che ho creato per verificare le cifre supportate dalla mia casella:

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

Si scopre che JDK 5, che è ciò che questa macchina OS X ha installato per impostazione predefinita, ha bisogno dei "File dei criteri di giurisdizione di forza illimitata" installati per dire a Java che è OK utilizzare i livelli di crittografia a bit più alti;puoi trova quei file qui (scorri verso il basso e guarda in alto la sezione "Altri download").Non sono sicuro che JDK 6 richieda la stessa operazione, ma gli stessi file di policy per JDK 6 sono disponibili qui, quindi presumo di sì.Decomprimi il file, leggi il README per vedere come installare i file a cui appartengono, quindi controlla di nuovo i codici supportati...Scommetto che AES-256 è ora nell'elenco.

Se lo è, dovresti essere d'oro;riavvia Tomcat, connettiti alla tua istanza SSL e scommetto che ora vedrai una connessione AES-256.

Altri suggerimenti

tuttavia, fintanto che il certificato del server è in grado di crittografare AES, il livello di crittografia tra il browser e il server è indipendente dal certificato stesso: tale livello di crittografia viene negoziato tra il browser e il server.In altre parole, da quanto ho capito il certificato non specifica il livello di crittografia, ma solo il file tipo di crittografia (ad esempio, AES).Vedere questo link (PDF) per verificare ciò e come i rivenditori di certificati vendono certificati "con capacità a 256 bit" nonostante il certificato non sia ciò che determina la capacità a 256 bit.

Quindi stai bene con il certificato che hai che supporta AES-128 - e la chiave è capire come fare in modo che Tomcat supporti AES-256 (poiché la maggior parte, se non tutti, i principali browser lo supportano sicuramente).

La forza della connessione SSL viene negoziata tra il browser e il server (o qualunque cosa fornisca SSL).Potrebbe essere il loro browser a richiedere una cifratura più debole.Hanno mai visto una connessione SSL 256-AES su questo browser?AES-128 è ancora un algoritmo molto sicuro, quindi a meno che non abbiano qualcosa che vogliono proteggere offline (pensa:La forza bruta del supercomputer genera 2 ^ 128 chiavi Wikipedia) attacco, 128 bit dovrebbe andare bene.Se hanno davvero bisogno di così tanta protezione, probabilmente dovrebbero usare una soluzione più stabile per l'accesso ai dati rispetto a un sito web, un tunnel ssh sicuro al loro server è a prova di proiettile (puoi dire loro che possono avere il loro AES a 256 bit e 4096 bit RSA) o una VPN a seconda dell'implementazione.

Penso che quello che stai cercando siahttp://www.sslshopper.com/article-how-to-disable-weak-ciphers-and-ssl-2-in-tomcat.html Ehttp://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#AppA

A seconda che tu voglia una buona sicurezza e compatibilità o la certificazione PCI.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top