Обслужвам уеб приложение през HTTPS на порта по подразбиране 443 с вграден Jetty (да наречем този serverA) на Ubuntu 14.04 (използвайки самоподписан сертификат). Работи добре от векове, но искам да стартирам друг вграден Jetty уеб сървър (serverB) на същата машина. Бих искал serverB да изпълнява SSL, използвайки порта по подразбиране 443, така че трябва да сменя serverA, за да слуша за заявки на някой друг порт.
Опитвах serverA с 444 и 8080. Сървърът се задейства добре, казвайки ми, че слуша заявки на правилния порт. но заявките просто висят и регистрационните файлове на сървъра не ми казват нищо. Ако стартирам сървъра да слуша на порт 443, тогава всичко работи добре.
Не мислех, че има значение кой порт използвам, стига уеб сървърът да е конфигуриран да използва SSL. Има ли още нещо, което трябва да направя?
Ето моят код за стартиране:
// Java 7 bug (feature?) - this disables SNI everywhere...
// required or else outgoing HTTPS requests will fail
System.setProperty("jsse.enableSNIExtension", "false");
PropertyConfigurator.configure("./log4j.properties");
Server server = new Server();
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
webapp.setWar("war");
server.setHandler(webapp);
HttpConfiguration https = new HttpConfiguration();
https.addCustomizer(new SecureRequestCustomizer());
SslContextFactory sslContextFactory = new SslContextFactory();
sslContextFactory.setKeyStorePath("keystore.jks");
sslContextFactory.setKeyStorePassword("password");
sslContextFactory.setKeyManagerPassword("password");
ServerConnector sslConnector = new ServerConnector(server,
new SslConnectionFactory(sslContextFactory, "http/1.1"),
new HttpConnectionFactory(https));
sslConnector.setPort(port);
server.setConnectors(new Connector[] { sslConnector });
try {
LOG.info("Starting server on port " + port);
server.start();
server.join();
} catch (Exception e) {
LOG.fatal("The web server has crashed", e);
}
Забележка: Причината това да е на StackOverflow, а не на SuperUser или нещо друго е, защото, доколкото разбирам, портът, използван за HTTPS, не е важен. Тогава предполагам, че това е проблем с Джети.
Редактиране:
Съжалявам, забравих да спомена версията на Jetty. Това е 9.2.0
9.2.3.v20140905
- person Joakim Erdfelt   schedule 02.10.2014