2013-01-16 13 views
19

Używam wersji 9.0.0.M4 jetty i próbuję skonfigurować go do akceptowania połączeń SSL. postępując zgodnie z instrukcjami: http://www.eclipse.org/jetty/documentation/current/configuring-connectors.htmlProgramowo skonfigurować SSL dla Jetty 9 osadzone

Udało mi się napisać coś, co działa. Jednak kod, który napisałem, wydaje się brzydki i niepotrzebnie skomplikowany. Każdy pomysł, jak to zrobić właściwie?

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

miła praca nad tym pytaniem –

Odpowiedz

10

ServerConnector powinny być ustawione z SslContextFactory.

Reszta prac wykonywanych w HttpConfiguration jest nieistotna dla konfiguracji SSL.

Dobry przykład ustawienia protokołu SSL w trybie wbudowanym jest utrzymywany w projekcie 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: być bardziej jasne (dzięki Erik)

Aktualizacja: czerwiec 2016

Eclipse Jetty Project przeniosła swoją kanoniczną repozytorium github.

Powyższy LikeJettyXml.java można teraz znaleźć w

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

+0

"Reszta prac wykonywanych w konfiguracji Http jest niepotrzebna." - czy istnieje lepszy sposób ustawiania rozmiarów nagłówka żądania/odpowiedzi? – Trejkaz

+0

Nie mówię, że nie możesz z niego korzystać, tylko że zazwyczaj nie jest potrzebny do osiągnięcia celów, które określiłeś w swoim pytaniu. Jeśli potrzebujesz kontrolować nagłówki, użyj wszystkich opcji HttpConfiguration. –

+0

@JoakimErdfelt: Muszę przyznać, że * "jest niepotrzebne" * część również mnie zaintrygowała przez kilka minut ... może byłoby fajniej powiedzieć "nieistotne dla ustawienia SSL" *. W przeciwnym razie +1 –

4

Na Jetty 9 jest dobre referencje here i wszystko, co trzeba zrobić, to utworzyć plik kluczy JKS jak wyjaśniono here. za pomocą polecenia keytool -genkey -alias sitename -keyalg RSA -keystore keystore.jks -keysize 2048. Z jakiegoś powodu to, co działa z pomostem 8, nie jest tym, co działa na 9.

-1

Dla tych, którzy nie mogą uzyskać konfiguracji powyżej działa: Jeśli używasz java 1.7, upewnij się, że masz najnowszą aktualizację. Pierwsze wersje jvm 1.7 powodują problemy z dostępem do stron internetowych https (przeglądarka może wyświetlać: zerowanie połączenia, przerwanie połączenia lub brak danych odebrania błędu).

Powiązane problemy