Domanda

Sto cercando di capire cosa sta succedendo nel questo codice .

KeyStore trustStore  = KeyStore.getInstance(KeyStore.getDefaultType());        
FileInputStream instream = new FileInputStream(new File("my.keystore")); 
try {
    trustStore.load(instream, "nopassword".toCharArray());
} finally {
    instream.close();
}

SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore);
Scheme sch = new Scheme("https", socketFactory, 443);
httpclient.getConnectionManager().getSchemeRegistry().register(sch);

Le mie domande:

trustStore.load(instream, "nopassword".toCharArray()); sta facendo che cosa esattamente? Dalla lettura della documentazione di load() caricherà KeyStore dati da un flusso di input (che è solo un file vuoto che abbiamo appena creato), utilizzando alcuni arbitrario "NOPASSWORD". Perché non basta caricarlo con null come parametro InputStream e una stringa vuota come il campo password?

E poi che cosa sta accadendo quando questo KeyStore vuota viene passata al costruttore SSLSocketFactory? Qual è il risultato di una tale operazione?

O -? È questo semplicemente un esempio in cui in una vera e propria applicazione che si avrebbe dovuto mettere in realtà un riferimento a un file di archivio chiavi / password esistente

È stato utile?

Soluzione

  

O -? È questo semplicemente un esempio in cui in una vera e propria applicazione che si avrebbe dovuto mettere in realtà un riferimento a un file di archivio chiavi / password esistente

Sembra davvero in quel modo. Non v'è alcun file "my.keystore" distribuito in entrambi i distribuzioni binarie o fonte del HttpClient 4.0.1. Per questo per funzionare è necessario creare un archivio chiavi reale. Si potrebbe utilizzare keytool o Portecle .

Questo esempio mostra come utilizzare un negozio di fiducia diverso da quello che gli usi JVM di default ($ JAVA_HOME / jre / lib / security / cacerts) per questa istanza di DefaultHttpClient. Questo è utile quando un sito SSL utilizza un certificato firmato da loro in-house certificato di autorità . verrà stabilita solo la connessione SSL quando viene riconosciuto il firmatario del certificato del server. La voce di Wikipedia su TLS è un'introduzione decente se non si ha familiarità con il concept.

Altri suggerimenti

Questo esempio cerca di mostrare come caricare il proprio negozio di fiducia. Per ottenere questo esempio di lavoro, è necessario disporre di un file chiamato "my.keystore" nella directory corrente e la password per l'archivio di chiavi è "NOPASSWORD".

Si prega di nota new File("my.keystore") non necessariamente creare un nuovo file. Esso crea semplicemente un oggetto File che punta al percorso.

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