Websocket SSL¶
WCS использует по умолчанию порт 8080 для приема Websocket - соединений и порт 8443 для приема Secure Websocket соединений.
Для подключения к WCS-серверу по протоколу Secure Websocket с использованием Web SDK в функцию Flashphoner.createSession()
должен быть передан параметр urlServer
с префиксом ё.
Пример:
№# Настройки
За Secure Websockets отвечают следующие настройки в файле flashphoner.properties:
Настройка | Значение по умолчанию |
---|---|
wss.port | 8443 |
wss.keystore.file | wss.jks |
wss.keystore.password | password |
wss.cert.password | password |
Сгенерированные сертификаты (self-signed)¶
WCS по умолчанию использует простые сгенерированные сертификаты, поэтому для того чтобы соединение прошло успешно, предварительно нужно обратиться из браузера по адресу:
https://192.168.1.5:8444/
Здесь, на месте 192.168.1.5
должен быть адрес вашего WCS сервера.
Браузер выдаст предупреждение о том, что сертификат безопасности, используемый WCS-сервером не известен браузеру или операционной системе. Это нормально, т.к. используется сгенерированный сертификат для тестовых целей. В зависимости от браузера продолжите переход по этому адресу или добавьте для этого адреса исключение безопасности. После этого клиентский сертификат WCS будет добавлен в кэш вашего браузера и дальнейшие соединения будут проходить успешно.
Действительные сертификаты¶
Самоподписанные сертификаты могут быть использованы только для тестирования и разработки, т.к. в противном случае вашим веб-пользователям придется проходить процедуру подтверждения неизвестного сертификата перед коннектом.
Для промышоленной эксплуатации потребуются SSL сертификаты, выданные авторизованным центром сертификации. Эти сертификаты как правило платные, и их можно заказать для домена или поддоменов. Сертификаты должны быть импортированы в хранилище сертификатов /usr/local/FlashphonerWebCallServer/conf/wss.jks
.
Импорт сертификата при помощи веб-интерфейса¶
SSL сертификат может быть импортирован через веб-интерфейс WCS следующим образом:
1. Получите SSL сертификат у вашего SSL-провайдера.
2. Войдите в веб-интерфейс WCS с доступным по умолчанию пользователем admin
(пароль admin
). Выберите в верхнем меню пункт "Security", а в подменю - пункт "Certificates":
3. На странице импорта загрузите файлы сертификата, полученные от Вашего SSL-провайдера, и файл ключа:
4. SSL-сертификаты, импортированные при помощи веб-интерфейса, записываются в хранилище сертификатов wss.jks
и отображаются в разделе "Security - Certificates":
Перезапустите WCS сервер, чтобы применить новые настройки. После перезагрузки сервера откройте URL https://yourdomain:8444
. Если сертификат был импортирован правильно, вы увидите, что браузер принимает сертификат WCS сервера.
Если импортировать SSL-сертификат через веб-интерфейс не удается, он может быть импортирован при помощи инструмента keytool
.
Импорт сертификата при помощи инструмента keytool¶
SSL-сертификата может быть импортирован из командной строки Linux с помощью инструмента keytool
, который поставляется с JDK.
Если у вас не установлена JDK, обратитесь к разделу Установка JDK.
Исполняемый файл keytool находится в каталоге $JDK_HOME/bin
, например /usr/java/default/bin
. Для удобства можно создать ссылку:
Кроме этого вам может потребоваться openssl для конвертации файлов сертификатов. Если openssl не установлен, установите его командой:
Получите SSL - сертификат у вашего SSL-провайдера.
Мы рассмотрим импорт сертификата от провайдера StartSSL.
От провайдера мы получили сертификат для домена test.flashphoner.com
в виде следующего набора файлов:
test.flashphoner.com.crt
- файл сертификатаtest.flashphoner.com.key
- файл приватного ключаca.pem
- корневой сертификатsub.class2.server.ca.pem
- промежуточный сертификат
Далее выполняем следующие 5 шагов:
1. Удаляем самоподписанный сертификат из хранилища
2. Создаем новое хранилище на базе сертификата и приватного ключа
openssl pkcs12 -export -out test.flashphoner.com.p12 -inkey test.flashphoner.com.key -in test.flashphoner.com.crt -certfile ca.pem -certfile sub.class2.server.ca.pem -name test.flashphoner.com
На этом шаге нужно ввести пароль для вашего приватного ключа test.flashphoner.com.key
, а также установить пароль для самого хранилища. Устанавливаем 'password'.
Обратите внимание, что файлы сертификатов могут иметь другие расширения, а также что вместо отдельных корневого и промежуточного сертификатов центр сертификации может предоставить один "bundle" сертификат (в этом случае в openssl команде для создания нового хранилища потребуется только одна опция -certfile
).
3. Импортируем вновь созданное хранилище в существующее хранилище wss.jks
keytool -importkeystore -srckeystore test.flashphoner.com.p12 -srcstoretype PKCS12 -destkeystore /usr/local/FlashphonerWebCallServer/conf/wss.jks
На этом шаге придется ввести пароли от импортируемого хранилища и от хранилища wss.jks
.
Enter destination keystore password: password
Enter source keystore password: password
Entry for alias test.flashphoner.com successfully imported.
Import command completed: 1 entries successfully imported, 0 entries failed or cancelled
Готово. Сертификаты успешно импортированы в хранилище. Перезапустите WCS сервер, чтобы применить новые настройки.
4. После перезагрузки сервера откройте URL https://test.flashphoner.com:8444
снова. Если сертификаты были импортированы правильно, вы увидите, что браузер принимает сертификат
WCS сервера.
5. Далее нужно использовать URL wss://test.flashphoner.com:8443
при соединении с сервером по Websocket. Обратите внимание, что мы используем в данном случае доменное имя вместо IP-адреса. Сертификат, выданный на это доменное имя, был импортирован в хранилище и используется WCS-сервером. Домен test.flashphoner.com
, использующийся в примере, вам нужно заменить вашим доменом, на который был выдан SSL-сертификат.
Импорт двух и более сертификатов для нескольких доменов¶
Иногда к одному и тому же серверу необходимо обеспечить доступ пользователей с разных доменов, подписанных различными сертификатами. В таких случаях сертификаты должны быть импортированы при помощи keytool. При этом:
1. Доступ к функциям сервера через SSL (Secure Websocket, HTTPS) будет работать для всех доменов.
2. Доступ к веб-интерфейсу через SSL будет работать только для одного домена, сертификат которого был импортирован первым.