2013-01-16 17 views
19

Utilizzo la versione jetty 9.0.0.M4 e sto provando a configurarla per accettare connessioni SSL. seguendo le istruzioni in: http://www.eclipse.org/jetty/documentation/current/configuring-connectors.htmlConfigurare in modo programmatico SSL per Jetty 9 incorporato

sono riuscito a scrivere qualcosa che funziona. Tuttavia, il codice che ho scritto sembra brutto e inutilmente complesso. Qualche idea su come farlo correttamente?

final Server server = new Server(Config.Server.PORT); 

SslContextFactory contextFactory = new SslContextFactory(); 
contextFactory.setKeyStorePath(Config.Location.KEYSTORE_LOCATION); 
contextFactory.setKeyStorePassword("******"); 
SslConnectionFactory sslConnectionFactory = new SslConnectionFactory(contextFactory, org.eclipse.jetty.http.HttpVersion.HTTP_1_1.toString()); 

HttpConfiguration config = new HttpConfiguration(); 
config.setSecureScheme("https"); 
config.setSecurePort(Config.Server.SSL_PORT); 
config.setOutputBufferSize(32786); 
config.setRequestHeaderSize(8192); 
config.setResponseHeaderSize(8192); 
HttpConfiguration sslConfiguration = new HttpConfiguration(config); 
sslConfiguration.addCustomizer(new SecureRequestCustomizer()); 
HttpConnectionFactory httpConnectionFactory = new HttpConnectionFactory(sslConfiguration); 

ServerConnector connector = new ServerConnector(server, sslConnectionFactory, httpConnectionFactory); 
connector.setPort(Config.Server.SSL_PORT); 
server.addConnector(connector); 

server.start(); 
server.join(); 
+0

bel lavoro su questa domanda –

risposta

10

Il ServerConnector dovrebbe essere configurato con un SslContextFactory.

Il resto del lavoro che si sta eseguendo nel numero HttpConfiguration è irrilevante per l'impostazione di SSL.

Un buon esempio di impostazione SSL in modalità incorporata viene mantenuto nel progetto embedded jetty examples. http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/examples/embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java

Edit: per essere più chiari (grazie Erik)

Aggiornamento: giugno 2016

The Eclipse Jetty progetto ha spostato il proprio repository github canonica.

È possibile che questo LikeJettyXml.java può ora essere trovato alla

https://github.com/eclipse/jetty.project/blob/jetty-9.4.x/examples/embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java

+0

"Il resto del lavoro che si sta facendo in HttpConfiguration non è necessario." - Quindi c'è un modo migliore per impostare le dimensioni dell'intestazione richiesta/risposta? – Trejkaz

+0

Non sto dicendo che non puoi usarlo, solo che generalmente non è necessario per raggiungere gli obiettivi che hai indicato nella tua domanda. Se è necessario controllare le intestazioni, utilizzare comunque HttpConfiguration. –

+0

@JoakimErdfelt: Devo ammettere che * "non è necessario" * parte mi ha lasciato perplesso per qualche minuto ... forse sarebbe più carino dire * "irrilevante per configurare SSL" *. Altrimenti +1 –

4

Per Jetty 9 v'è un buon riferimento here e tutto quello che dovete fare è creare il file di archivio chiavi JKS come spiegato here. utilizzando il comando keytool -genkey -alias sitename -keyalg RSA -keystore keystore.jks -keysize 2048. Per qualche motivo ciò che funziona con jetty 8 non è quello che funziona su 9.

-1

Per coloro che non riescono a passare al di sopra della configurazione funzionante: Se si utilizza java 1.7, assicurarsi di disporre dell'ultimo aggiornamento di esso. Le prime versioni di jvm 1.7 causano problemi con l'accesso alle pagine Web https (il browser potrebbe visualizzare: reset della connessione, connessione interrotta o nessun errore di ricezione dati).

Problemi correlati