Я пытаюсь настроить локальный сервер 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 ]
Затем перезапустите службу