wss - настройка. ошибка 'bad_certificate'

Алексей

New Member
Добрый день. Решили использовать wss (порт 8443), для работы ClickToCall (звонок с сайта). Получаем ошибку в логах:

WSServerHandler - New I/O worker #10 Close channel because: javax.net.ssl.SSLException 'Received fatal alert: bad_certificate'

Данные сервера: Ubuntu 14.04.4 LTS (GNU/Linux 3.13.0-86-generic x86_64)
Версия Flashphoner: 4.1.1569
java version: 1.7.0_111
OpenJDK Runtime Environment (IcedTea 2.6.7) (7u111-2.6.7-0ubuntu0.14.04.3)
OpenJDK 64-Bit Server VM (build 24.111-b01, mixed mode)

Фаервол отключен. Тестирование (клиент - сервер) производится на одном и том же сервере. Астериск находится в той же локальной сети (фаервола нет).

Важно: Без шифрования все работает (ws)

Что было сделано:

На клиенте:
в файле flashphoner.xml изменен параметр "use_wss" на "true".

На сервере:
Выпущен ssl сертификат (StartCom Ltd.)
Настроена работа домена через ssl (443 порт)
Имеем файлы:
домен.csr
домен.crt
домен.key

Далее выполнено следующее:
1. keytool -delete -alias selfsigned -keystore /usr/local/FlashphonerWebCallServer/conf/wss.jk
2. openssl pkcs12 -export -in домен.crt -inkey mydomain.key -out домен.p12 -name "домен"
3. keytool -importkeystore -srckeystore домен.p12 -srcstoretype PKCS12 -destkeystore /usr/local/FlashphonerWebCallServer/conf/wss.jks
4. keytool -import -keystore /usr/local/FlashphonerWebCallServer/conf/wss.jks -file домен.crt -alias ca-root
5. Restart WCS server

после чего при обращении скриптом Click2Call в серверных логах следующее:

==CAT==
WARN WSServerHandler - New I/O worker #9 Close channel because: javax.net.ssl.SSLException 'Received fatal alert: bad_certificate'
WARN faultChannelPipeline - New I/O worker #9 An exception was thrown by a user handler while handling an exception event ([id: 0x57a62247, /XX.XXX.XXX.XXX:37213 => /XX.XXX.XXX.XXX:8443] EXCEPTION: javax.net.ssl.SSLException: Received fatal alert: bad_certificate)
java.lang.NullPointerException
at com.flashphoner.server.ws.client.WSClients.isEnabled(Unknown Source)
at com.flashphoner.server.ws.B.exceptionCaught(Unknown Source)
==CAT==

При попытке обратиться к адресу - https://домен:8443 - обрыв соеденения, получаем следующее в логах:

==CAT==
WARN WSServerHandler - New I/O worker #9 Close channel because: org.jboss.netty.handler.codec.http.websocketx.WebSocketHandshakeException 'not a WebSocket handshake request: missing upgrade'
WARN faultChannelPipeline - New I/O worker #9 An exception was thrown by a user handler while handling an exception event ([id: 0x5c149045, /XX.XXX.XXX.XXX:57225 => /XX.XXX.XXX.XXX:8443] EXCEPTION: org.jboss.netty.handler.codec.http.websocketx.WebSocketHandshakeException: not a WebSocket handshake request: missing upgrade)
java.lang.NullPointerException
==CAT==

Так же пытались подменить файл wss.jks в директории conf - файлом из поставки (тогда все работает)

В итоге склоняемся к тому что сертификат импортирован не верно. Хотя при импортировании ошибок в консоли небыло.
Адрес вида https://домен - отрабатывает корректно (сертификат установлен все хорошо)

Просим указать на наши ошибочные действия. (Спасибо)
 

Max

Administrator
Staff member
Вы на пятом шаге импортировали сертификат домен.crt и указали ему alias ca-root
4. keytool -import -keystore /usr/local/FlashphonerWebCallServer/conf/wss.jks -file домен.crt -alias ca-root
В документации немного не так, а именно:
4. Импортируем в хранилище wss.jks корневой сертификат.
keytool -import -keystore /usr/local/FlashphonerWebCallServer/conf/wss.jks -file ca.pem -alias ca-root
5. Импортируем в хранилище wss.jks промежуточный сертификат
keytool -import -keystore /usr/local/FlashphonerWebCallServer/conf/wss.jks -file sub.class2.server.ca.pem -alias ca-intermediate
Т.е. вам нужно скачать ca.crt и intermediate.crt с сайта StarCom и их импортировать на шаге 4 и 5 соответственно.
Тогда будет корректно.
 

Алексей

New Member
Установили сертификаты по вашим рекомендациям. При попытке зайти на url - https://домен:8443/
Получаем ошибку:

WARN WSServerHandler - New I/O worker #12 Close channel because: org.jboss.netty.handler.codec.http.websocketx.WebSocketHandshakeException 'not a WebSocket handshake request: missing upgrade'

При попытке зайти клиентом - ошибок нет, но регистрация не происходит, а в логах последняя строка :

INFO SoftphoneFactory - New I/O worker #9 newCustomSoftphone login=наш_логин password=наш_пароль domain=XXX.XXX.XXX.XXXoutboundProxy=XXX.XXX.XXX.XXX port=5060 visibleName=From WEB

INFO WCS3Handler - New I/O worker #9 Connected client: ClientConfig{rtspMedia=false, wsTunnel=false, login='наш_логин', authenticationName='наш_логин', password='наш_пароль', domain='XXX.XXX.XXX.XXX', outboundProxy='XXX.XXX.XXX.XXX', localPort=-1, port=5060, visibleName='From WEB', regRequired=true, applicationName='null', swfUrl='null', useProxy=true, qValue='', pAssociatedUri='null', contactParams='', authDate=Wed Oct 12 12:26:24 MSK 2016, authToken='null', logsFolderName='null', clientVersion='null'}
 

Алексей

New Member
Смотрим консоль астериска - flashphoner даже не обращается к нему (не пытается регистрироваться). Подозреваем, что ошибка где то раньше происходит.
 
Top