Установка
Стандартно, из портов. Возможно во время установки зависимостей, какие-то пакеты(например llvm80) ругнутся на отсутствие Python 3.6(хотя он и стоит, но по-умолчанию видит версию 2.7), тогда помогло установка этих пакетов отдельно(также из портов).
SSL-сертификат для ejabberd
Если не самоподписаный сертификат, то добавим ключи сначала наши и туда же Цепочку сертификатов
cat private.key >> im.pem cat certificate.pem >> im.pem cat chain-1.pem >> im.pem cat chain-2.pem >> im.pem
Настройка
Обращайте внимание на отступы в файле yml играют роль. Табуляцией не пользоваться.
В файле конфигурации yml в секции сертификата, прописываем наш:
certfiles:
- "/usr/local/etc/ejabberd/certs/im.pem"
Метод аутентификации пользователей
В том же файле конфигурации с расширением “.yml” или “.yaml” прописываем метод проверки пользователей. Примеры:
- Домен
example.net
использует внутреннюю аутетентификацию, while доменexample.com
использует LDAP серверlocalhost
для проверки пользователей:host_config: "example.net": auth_method: internal "example.com": auth_method: ldap ldap_servers: - "localhost" ldap_uids: - "uid" ldap_rootdn: "dc=localdomain" ldap_rootdn: "dc=example,dc=com" ldap_password: ""
- конфигурация посложнее, — SQL для внутренней(example.net) авторизации и несколько LDAP серверов, один
localhost
и второйotherhost
: -
host_config: "example.net": auth_method: sql sql_type: odbc sql_server: "DSN=ejabberd;UID=ejabberd;PWD=ejabberd" "example.com": auth_method: ldap ldap_servers: - "localhost" - "otherhost" ldap_uids: - "uid" ldap_rootdn: "dc=localdomain" ldap_rootdn: "dc=example,dc=com" ldap_password: ""
Что такое CN, OU, DC?
Из RFC2253 (UTF-8 строковое представление отличительных имен):
String X.500 AttributeType ------------------------------ CN commonName L localityName ST stateOrProvinceName O organizationName OU organizationalUnitName C countryName STREET streetAddress DC domainComponent UID userid
Также необходимо создать учетку в AD которая имеет права на чтение LDAP базы домена my.domain.local, в моем случае это — CN=for_jabber,OU=it,DC=my,DC=domain,DC=local
Интерактивный запуск ejabberd, для отладки(показывает ошибки):
ejabberdctl live
Источники:
https://habr.com/ru/post/192446/
https://www.freebsd.org/doc/ru/books/handbook/openssl.html
https://docs.ejabberd.im/admin/configuration/?kp=1&k1=-1
http://vladimir-stupin.blogspot.com/2017/09/ssl-ejabberd.html