2015-01-16 3 views
0

Я пытаюсь получить мой встроенный Jetty 8.1.4 (нет, я могу пойти выше!) Сервер для работы с https. Я генерировать свой хранилище ключей с помощью следующей команды:Встроенный Jetty с https: Неверный формат хранилища ключей

keytool -genkey -alias sitename -keyalg RSA -keystore keystore -keysize 2048 

Моя проблема заключается в том, что, когда я запускаю это, я получаю хорошее исключение!

WARN - AbstractLifeCycle - FAILED [email protected](null,null): java.io.IOException: Invalid keystore format 
java.io.IOException: Invalid keystore format 
    at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:633) 
    at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:38) 
    at java.security.KeyStore.load(KeyStore.java:1183) 

Я попытался создать хранилище ключей, следуя различным онлайн-руководствам, но безрезультатно.

Любые идеи?

Большое спасибо,

AW

Вот код сервера:

public static void main(String[] args) throws Exception { 

    Server server = new Server(); 

    server.setStopAtShutdown(true); 
    server.setGracefulShutdown(ALLOWED_SHUTDOWN_TIME); 

    Resource keystore = Resource.newClassPathResource("/keystore"); 

    SslContextFactory sslContextFactory = new SslContextFactory(); 

    sslContextFactory.setKeyStoreResource(keystore); 
    sslContextFactory.setKeyStorePassword("wicket"); 
    sslContextFactory.setTrustStoreResource(keystore); 
    sslContextFactory.setKeyManagerPassword("wicket"); 

    SslSelectChannelConnector connector = new SslSelectChannelConnector(sslContextFactory); 

    connector.setMaxIdleTime(30000); 
    connector.setPort(getServerPort()); 
    connector.setAcceptors(4); 

    connector.setReuseAddress(false); 

    server.addConnector(connector); 

    final ServletContextHandler context = new ServletContextHandler(server, "/", ServletContextHandler.SESSIONS); 

    context.setResourceBase("src/main/webapp"); 
    context.setInitParameter("org.eclipse.jetty.servlet.Default.dirAllowed", "false"); 

    context.getSessionHandler().getSessionManager().setMaxInactiveInterval(60 * 15); 
    context.getSessionHandler().getSessionManager().setSessionTrackingModes(newHashSet(SessionTrackingMode.COOKIE)); 

    final FilterHolder openSessionInViewFilter = new FilterHolder(new OpenSessionInViewFilter()); 

    context.addFilter(openSessionInViewFilter, "/", EnumSet.of(DispatcherType.REQUEST)); 

    final FilterHolder wicketFilter = new FilterHolder(WicketFilter.class); 

    wicketFilter.setInitParameter(WicketFilter.FILTER_MAPPING_PARAM, "/*"); 
    wicketFilter.setInitParameter("applicationFactoryClassName", "org.apache.wicket.spring.SpringWebApplicationFactory"); 

    wicketFilter.setInitParameter("configuration", "development"); 

    context.addFilter(wicketFilter, "/*", EnumSet.of(DispatcherType.REQUEST)); 

    context.getInitParams().put("contextConfigLocation", "classpath:spring/spring-config.xml"); 

    context.addEventListener(new ContextLoaderListener()); 

    try { 
     server.start(); 
     server.join(); 

    } catch (Exception exception) { 

     exception.printStackTrace(); 
     System.exit(100); 
    } 
} 
+0

Jetty 8 теперь EOL (конец жизни) - ваш вопрос будет более уместным, если вы используете что-то, что по крайней мере несколько актуально и активно используется большинством. –

+0

Каково было окончательное решение проблемы? – theLearner

ответ

0

Когда речь заходит о SSL и в Интернете, вы ДОЛЖНЫ ОСТАВАТЬСЯ ТОК как в JVM, а Серверное программное обеспечение. Быстрые изменения в том, что поддерживается в SSL в браузере, прокси, аппаратном обеспечении и т. Д., Заставляют вас это делать.

Например, Jetty 8.1.4 был создан еще во времена SSL v1, SSL v2 были популярны. Сегодня SSL в значительной степени устарел (вплоть до SSL v3), заменив TLS на NPN/ALPN, все более популярным.

Новые версии Jetty даже не рекомендовали использовать различные шифровые комплекты, которые вызывают проблемы в Интернете.

Даже органы сертификации (CA) перемещаются в направлениях, которые делают старые SSL-серверы неуместными, что делает почти невозможным получение сертификата, который будет работать с этими старыми средами.

Смежные вопросы