2010-12-28 2 views
0

Я пытаюсь запустить сервер ejabberd для использования в режиме реального времени в приложении для Android.Ошибка драйвера eJabberD TLS

Я установил сервер с использованием 32-битного двоичного кода и настроил его на точку, в которой я могу войти в систему, используя веб-интерфейс. Однако у меня есть проблемы с подключением к нему с клиентом. Ошибка, возвращаемая сервером, - это {open_error, -10}, которая должна быть ошибкой при попытке прочитать файл tls_drv.so.

Некоторые поиски в Интернете показали, что есть люди с тем же вопросом, что и я, но я не могу найти конкретного решения. Эта тема здесь http://www.ejabberd.im/node/4200 упоминает те же самые проблемы, что и у меня, и OP, похоже, исправил их, используя новую версию драйверов. Я не знаю, как и где можно получить эти драйверы.

Может кто-нибудь здесь, пожалуйста, помогите мне исправить это? Спасибо.

+0

Похоже, что ваш двоичный файл не скомпилирован с поддержкой OpenSSL, откуда вы его взяли? – ismail

+0

Здравствуйте, двоичный файл был отправлен с установщиком ejabberd. Это было в их пакете.Я также попробовал загрузить драйвер вручную, как описано здесь: http://www.ejabberd.im/node/4094#comment-56654, но я получил ошибку -10 каждый раз, когда пытаюсь что-то предлагать здесь .... так что я думаю, что библиотека действительно виноват здесь. – Bostjan

+0

Если вы имеете в виду про установщик ejabberd, я получил это со своего сайта. – Bostjan

ответ

2

Большое спасибо за эту команду ldd! Он решил мою проблему: -D

Вот что: очевидно, tls_drv.so ищет libssl.so.0.9.8 и libcrypto.so.0.9.8, а ejabberd включает 0.9.7. Я установил libssl.so.0.9.8e и libcrypto.so.0.9.8e, которые tls_drv.so не смог найти (из-за «e»?).

Я создал символическую ссылку на 0.9.8e, названную 0.9.8. И вуаля! Это сработало!

Вот еще информация:

  • Centos 5,5, 32 бит
  • ejabberd 2.1.8
  • Я скачал бинарный инсталлятор непосредственно из www.process-one.net (www.ejabberd.im)
  • У меня все еще есть настройка по умолчанию, за исключением имени хоста и пользователя admin, которые требуются установщиком.
  • Соединение с jabber-клиентом, похоже, отлично работает без TLS. Проблема возникла, когда я настроил своего клиента для шифрования соединения, когда он доступен.

Вот журнал Эрл жалуясь перед исправлением:

=CRASH REPORT==== 12-Sep-2011::22:48:56 === 
    crasher: 
    pid: <0.372.0> 
    registered_name: [] 
    exception exit: {{case_clause,{error,{open_error,-10}}}, 
        [{tls,tcp_to_tls,2}, 
         {ejabberd_socket,starttls,3}, 
         {ejabberd_c2s,wait_for_feature_request,2}, 
         {p1_fsm,handle_msg,10}, 
         {proc_lib,init_p,5}]} 
     in function p1_fsm:terminate/7 
    initial call: gen:init_it(p1_fsm,<0.258.0>,<0.258.0>,ejabberd_c2s, 
           [{ejabberd_socket, 
            {socket_state,gen_tcp,#Port<0.406>, 
             <0.371.0>}}, 
           [inet, 
           {certfile, 
            "/opt/ejabberd-2.1.8/conf/server.pem"}, 
           starttls, 
           {access,c2s}, 
           {shaper,c2s_shaper}, 
           {max_stanza_size,65536}, 
           {ip,{0,0,0,0}}]], 
           []) 
    ancestors: [ejabberd_c2s_sup,ejabberd_sup,<0.36.0>] 
    messages: [] 
    links: [<0.258.0>] 
    dictionary: [{'$internal_queue_len',0}] 
    trap_exit: false 
    status: running 
    heap_size: 987 
    stack_size: 23 
    reductions: 3258 
    neighbours: 

=SUPERVISOR REPORT==== 12-Sep-2011::22:48:56 === 
    Supervisor: {local,ejabberd_c2s_sup} 
    Context: child_terminated 
    Reason:  {{case_clause,{error,{open_error,-10}}}, 
        [{tls,tcp_to_tls,2}, 
        {ejabberd_socket,starttls,3}, 
        {ejabberd_c2s,wait_for_feature_request,2}, 
        {p1_fsm,handle_msg,10}, 
        {proc_lib,init_p,5}]} 
    Offender: [{pid,<0.372.0>}, 
        {name,undefined}, 
        {mfa, 
         {ejabberd_c2s,start_link, 
          [{ejabberd_socket, 
           {socket_state,gen_tcp,#Port<0.406>,<0.371.0>}}, 
          [inet, 
          {certfile,"/opt/ejabberd-2.1.8/conf/server.pem"}, 
          starttls, 
          {access,c2s}, 
          {shaper,c2s_shaper}, 
          {max_stanza_size,65536}, 
          {ip,{0,0,0,0}}]]}}, 
        {restart_type,temporary}, 
        {shutdown,brutal_kill}, 
        {child_type,worker}] 

Вот процесс, чтобы исправить это:

[email protected] [/opt/ejabberd-2.1.8]# find . -name tls_drv.so 
./lib/ejabberd-2.1.8/priv/linux-x86/lib/tls_drv.so 
[email protected] [/opt/ejabberd-2.1.8]# cd lib/ejabberd-2.1.8/priv/linux-x86/lib/ 
[email protected] [/opt/ejabberd-2.1.8/lib/ejabberd-2.1.8/priv/linux-x86/lib]# ldd tls_drv.so 
linux-gate.so.1 => (0x00f9c000) 
libssl.so.0.9.8 => not found 
libcrypto.so.0.9.8 => not found 
libc.so.6 => /lib/libc.so.6 (0x00d9c000) 
/lib/ld-linux.so.2 (0x00943000) 
[email protected] [/lib]# cd /lib 
[email protected] [/lib]# ll libcrypto.so.* libssl.so.* 
-rwxr-xr-x 1 root root 1296964 Mar 6 2011 libcrypto.so.0.9.8e* 
lrwxrwxrwx 1 root root  14 Nov 24 2009 libcrypto.so.4 -> libcrypto.so.6* 
lrwxrwxrwx 1 root root  19 Apr 26 11:06 libcrypto.so.6 -> libcrypto.so.0.9.8e* 
-rwxr-xr-x 1 root root 293044 Mar 6 2011 libssl.so.0.9.8e* 
lrwxrwxrwx 1 root root  11 Nov 24 2009 libssl.so.4 -> libssl.so.6* 
lrwxrwxrwx 1 root root  16 Apr 26 11:06 libssl.so.6 -> libssl.so.0.9.8e* 
[email protected] [/lib]# ln -s libcrypto.so.0.9.8e libcrypto.so.0.9.8 
[email protected] [/lib]# ln -s libssl.so.0.9.8e libssl.so.0.9.8 
[email protected] [/lib]# cd - 
/opt/ejabberd-2.1.8/lib/ejabberd-2.1.8/priv/linux-x86/lib 
[email protected] [/opt/ejabberd-2.1.8/lib/ejabberd-2.1.8/priv/linux-x86/lib]# ldd tls_drv.so 
./tls_drv.so: /lib/libcrypto.so.0.9.8: no version information available (required by ./tls_drv.so) 
./tls_drv.so: /lib/libssl.so.0.9.8: no version information available (required by ./tls_drv.so) 
linux-gate.so.1 => (0x0088c000) 
libssl.so.0.9.8 => /lib/libssl.so.0.9.8 (0x00110000) 
libcrypto.so.0.9.8 => /lib/libcrypto.so.0.9.8 (0x00ebf000) 
libc.so.6 => /lib/libc.so.6 (0x00252000) 
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x008ef000) 
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00ae0000) 
libcom_err.so.2 => /lib/libcom_err.so.2 (0x0077c000) 
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00527000) 
libresolv.so.2 => /lib/libresolv.so.2 (0x00158000) 
libdl.so.2 => /lib/libdl.so.2 (0x0016c000) 
libz.so.1 => /usr/lib/libz.so.1 (0x00a67000) 
/lib/ld-linux.so.2 (0x00943000) 
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x00df3000) 
libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x00e2a000) 
libselinux.so.1 => /lib/libselinux.so.1 (0x008cc000) 
libsepol.so.1 => /lib/libsepol.so.1 (0x00171000) 
[email protected] [/opt/ejabberd-2.1.8/lib/ejabberd-2.1.8/priv/linux-x86/lib]# 

Я перезагрузил ejabberd, и что это было!

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

С уважением!

maganap

0

Последние инсталлятор решить эту на ejabberd Зависимость от.

Благодарим за сообщение!

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