Подтвердить что ты не робот

Программно настроить SSL для встроенного Jetty 9

Я использую jetty версии 9.0.0.M4 и пытаюсь настроить его для подключения SSL-соединений. следуя инструкциям в: http://www.eclipse.org/jetty/documentation/current/configuring-connectors.html

Мне удалось написать что-то, что работает. Однако код, который я написал, кажется уродливым и излишне сложным. Любая идея, как это сделать правильно?

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();
4b9b3361

Ответ 1

ServerConnector следует настроить с помощью SslContextFactory.

Остальная часть работы, которую вы выполняете в HttpConfiguration, не имеет отношения к настройке SSL.

Хороший пример настройки SSL во встроенном режиме поддерживается в проекте 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

Изменить: чтобы быть более ясным (спасибо Эрик)

Обновление: июнь 2016

Проект Eclipse Jetty переместил свой канонический репозиторий в github.

Выше LikeJettyXml.java теперь можно найти в

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

Ответ 2

Для Jetty 9 есть хорошая ссылка здесь, и все, что вам нужно сделать, это создать файл хранилища ключей JKS, как описано здесь. используя команду keytool -genkey -alias sitename -keyalg RSA -keystore keystore.jks -keysize 2048. По какой-то причине то, что работает с причалом 8, не работает на 9.

Ответ 3

Для тех, кто не может работать над конфигурацией: Если вы используете java 1.7, убедитесь, что у вас есть последнее обновление. Первые версии jvm 1.7 вызывают проблемы с доступом к веб-страницам https (браузер может отображать: соединение reset, соединение прервано или не полученная ошибка).