web-dev-qa-db-fra.com

Configurer SSL par programme pour Jetty 9 intégré

J'utilise la version 9.0.0.M4 de jetty et j'essaie de le configurer pour accepter les connexions SSL. en suivant les instructions de: http://www.Eclipse.org/jetty/documentation/current/configuring-connectors.html

J'ai réussi à écrire quelque chose qui fonctionne. Cependant, le code que j'ai écrit semble laid et inutilement complexe. Une idée de comment le faire correctement?

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();
23
user1984205

Le ServerConnector doit être configuré avec un SslContextFactory .

Le reste du travail que vous effectuez dans la HttpConfiguration n'est pas pertinent pour la configuration de SSL.

Un bon exemple de configuration de SSL en mode intégré est conservé dans le projet exemples de la jetée intégrée . http://git.Eclipse.org/c/jetty/org.Eclipse.jetty.project.git/tree/examples/embedded/src/main/Java/org/Eclipse/jetty/embedded/LikeJettyXml. Java

Edit: pour être plus clair (merci Erik)

Mise à jour: juin 2016

Le projet Eclipse Jetty a déplacé son référentiel canonique vers github.

Ce qui précède LikeJettyXml.Java est désormais disponible sur

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

11
Joakim Erdfelt

Pour Jetty 9, il existe une bonne référence ici et tout ce que vous devez faire est de créer le fichier de clés JKS comme expliqué ici . en utilisant la commande keytool -genkey -alias sitename -keyalg RSA -keystore keystore.jks -keysize 2048. Pour une raison quelconque, ce qui fonctionne avec la jetée 8 n'est pas ce qui fonctionne avec 9.

5
Bwire

Pour ceux qui ne peuvent pas faire fonctionner la configuration ci-dessus: Si vous utilisez Java 1.7, assurez-vous d'en avoir la dernière mise à jour. Les premières versions de jvm 1.7 posent des problèmes d'accès aux pages Web https (le navigateur peut affichage: réinitialisation de la connexion, connexion interrompue ou aucune erreur de réception de données).

0
vinga