Я следил за this article и создал простейшее приложение echo для websocket. Хотя статья о Glassfish, я успешно запускаю свое приложение под Jetty 9, поскольку они используют стандартный javax.websocket API в статье. Он работает нормально, но теперь я хочу защитить соединение через Интернет. Я googled вокруг и нашел большинство примеров написаны как автономное приложение Java (с методом public static void main()
). Они создают новый ConnectionFactory
и запускают сервер с их кода (например, here).Jetty: как защитить соединение с websocket в web.xml?
Но я хочу запустить приложение под Jetty в качестве контейнера, поэтому я хочу просто указать некоторые параметры в файле web.xml или что-то еще, чтобы защитить мое соединение. Так что я нашел this статью и изменил мой web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected resource</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<!-- https -->
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
</web-app>
Проблема заключается в том, что не работает. Наверное, потому что статья о Glassfish снова.
Как это не работает:
- Мой IDE (IDEA) показывает красный цвет все теги внутри
<security-constraint>
, это означает, что проверка схемы не удалось, и эти теги не может содержаться внутри<security-constraint>
- Когда я пытаюсь чтобы открыть index.html через HTTPS я получаю ошибку
ssl_error_rx_record_too_long
в браузере, а также есть две ошибки в выводе Jetty:
Illegal character 0x16 in state=START for buffer HeapByteBuffer
и
badMessage: 400 Illegal character 0x16 for HttpChannelOverHttp
Так .. Что я делаю неправильно? Как сделать защищенный websocket через Jetty или конфигурацию приложения?
привет Энди, я вижу точно такие же ошибки в журналах. могли ли вы решить это? что вы изменили, чтобы заставить его работать? благодаря! – Hristo
Привет, Христо. Вы читали статью из принятого ответа ниже? https://wiki.eclipse.org/Jetty/Howto/Configure_SSL – Andrew
Да, я прочитал его, Энди :) единственный способ, которым я смог разрешить эти ошибки, - удалить модуль 'http' (комментируя его в 'start.ini'). что ты сделал? – Hristo