Назад | Перейти на главную страницу

Как настроить Inn2 и nnrpd для аутентификации с использованием SSL?

Я пытаюсь настроить локальный сервер usenet, Inn2, с аутентификацией через SSL, чтобы читателям (клиентам) не требовалось отправлять свои пароли в открытом виде.

Я создал самоподписанный сертификат, используя инструкции, аналогичные инструкциям из nnrpd страница руководства, http://linux.die.net/man/8/nnrpd,

openssl req -new -x509 -nodes -out /usr/local/news/lib/cert.pem \
    -days 366 -keyout /usr/local/news/lib/key.pem
chown news:news /usr/local/news/lib/cert.pem
chmod 640 /usr/local/news/lib/cert.pem
chown news:news /usr/local/news/lib/key.pem
chmod 600 /usr/local/news/lib/key.pem

Я использую CentOS 6.2, но нет news каталог в /usr/local, поэтому вместо этого я поместил cert.pem и key.pem в /usr/libexec/news/, где расположены двоичные файлы inn2.

Затем я отредактировал /etc/news/inn2.conf и изменил nnrpd для работы на порту 563 используется порт SSL usenet. Однако нигде в файле конфигурации я не вижу, где установить путь к этим сертификатам. Попытка подключиться с использованием SSL / TLS через порт 563 в Thunderbird не работает; время истекает, и ошибки регистрируются на сервере, на котором запущен inn2. Из /var/log/news/news.debug Ошибка no_success_auth регистрируется, а из /var/log/news/news.notice несколько сообщений регистрируются как

Apr 14 05:40:48 linode-vps nnrpd[20802]: ip70-171-32-39.ga.at.cox.net (70.171.32.39) connect - port 119
Apr 14 05:40:48 linode-vps nnrpd[20802]: ip70-171-32-39.ga.at.cox.net unrecognized #026#003#001
Apr 14 05:40:48 linode-vps nnrpd[20802]: ip70-171-32-39.ga.at.cox.net unrecognized �#024
Apr 14 05:40:48 linode-vps nnrpd[20802]: ip70-171-32-39.ga.at.cox.net unrecognized #001
Apr 14 05:41:30 linode-vps nnrpd[20802]: ip70-171-32-39.ga.at.cox.net times user 0.000 system  0.005 idle 0.000 elapsed 41.803
Apr 14 16:57:00 linode-vps nnrpd[29640]: ip70-171-32-39.ga.at.cox.net (70.171.32.39) connect - port 119

Из этих журналов похоже, что Thunderbird отправляет данные с использованием SSL (но странно, через порт 119?), Но это inn2/nnrpd не использует SSL и не может читать его команды.

Из http://osdir.com/ml/network.inn/2003-08/msg00013.html Я читаю поставить key.pem и cert.pem в /news/lib но это не имело никакого эффекта.

У меня вопрос, как мне настроить inn2/nnrpd использовать SSL? Как заставить его использовать сгенерированные мной сертификаты? Какие шаги я пропустил?

Когда вы меняете порт в inn.conf ты говоришь nnrpd для прослушивания порта 563, но он не включит SSL автоматически. INN2 не поддерживает прослушивание отдельных SSL-соединений на порту 563. Вы должны получить nnrpd прослушивать этот порт вручную.

Из справочной страницы nnrpd:

   Most news clients currently do not use the STARTTLS command, however, and instead expect to connect to a
   separate port (563) and start a TLS negotiation immediately.  innd does not, however, know how to listen
   for connections to that port and then spawn nnrpd the way that it does for regular reader connections.
   You will therefore need to arrange for nnrpd to listen on that port through some other means.  This can
   be done with the -D flag along with "-p 563" and put into your init scripts:

       su news -c '<pathbin>/nnrpd -D -p 563 -S'

   but the easiest way is probably to add a line like:

       nntps stream tcp nowait news <pathbin>/nnrpd nnrpd -S

   to /etc/inetd.conf or the equivalent on your system and let inetd run nnrpd.  (Change the path to nnrpd
   to match your installation.)  You may need to replace "nntps" with 563 if "nntps" isn't defined in
   /etc/services on your system.

Кстати. У меня часто были проблемы с SSL-реализацией nnrpd, поэтому я использую stunnel в качестве SSL-прокси для nnrpd.

nnrpd использует те же файлы сертификатов, что и INN, они определены в inn.conf:

  You then have to set these inn.conf parameters with the right paths:

       tlscapath:      <pathetc>
       tlscertfile:    <pathetc>/cert.pem
       tlskeyfile:     <pathetc>/key.pem

   In case you have a certificate authority root certificate, you can also set tlscafile to its path.

Лучше отредактировать inn.conf и после выбора путей для TLS указать «флаги» для nrrpd Я редактировал эти строки

nnrpdflags:                  "-S"
tlscapath:                  /etc/news
tlscertfile:                /etc/news/news.cert.pem
tlskeyfile:                 /etc/news/news.key.pem
tlsprotocols:               [ TLSv1.2 ]

Затем перезапустите службу