собрал qpopper 4.0.4 с поддержкой ssl(на машине устновлен OpenSSL 0.9.6.h, OS RH 7.3)
завернул его через xinetd:
service pop3s
{
flags = REUSE NAMEINARGS
socket_type = stream
protocol = tcp
wait = no
user = root
instances = UNLIMITED
server = /usr/local/sbin/popper/popper
server_args = qpopper -s -l 2
log_on_success += HOST PID EXIT DURATION
log_on_failure += ATTEMPT HOST
disable = no
}в qpopper.config:
set tls-support = alternate-portребутим xinetd
поднимается 995-ый порт
при попытке сделать telnet 127.0.0.1 995
Connection closed by foreign host.
в /var/log/maillog:
Jan 16 11:16:51 tt qpopper[15327]: Error setting certificate PEM file
Jan 16 11:16:51 tt qpopper[15327]: ...SSL error: error:0200100E:system library:fopen:Bad address
Jan 16 11:16:51 tt qpopper[15327]: ...SSL error: error:20074002:BIO routines:FILE_CTRL:system lib
Jan 16 11:16:51 tt qpopper[15327]: ...SSL error: error:140AD002:SSL routines:SSL_CTX_use_certificate_file:system lib
Jan 16 11:16:51 tt qpopper[15327]: Failed initializing TLS/SSLp.s. сертификат самоподписанный (сделан по аналогии с работающим апачевским)
что не так?
>собрал qpopper 4.0.4 с поддержкой ssl(на машине устновлен OpenSSL 0.9.6.h, OS RH
>7.3)
>завернул его через xinetd:
>service pop3s
>{
>flags = REUSE NAMEINARGS
>socket_type = stream
>protocol = tcp
>wait = no
>user = root
>instances = UNLIMITED
>server = /usr/local/sbin/popper/popper
>server_args = qpopper -s -l 2
>log_on_success += HOST PID EXIT DURATION
>log_on_failure += ATTEMPT HOST
>disable = no
>}
>
>в qpopper.config:
>set tls-support = alternate-port
>
>ребутим xinetd
>поднимается 995-ый порт
>при попытке сделать telnet 127.0.0.1 995
>Connection closed by foreign host.
>в /var/log/maillog:
>Jan 16 11:16:51 tt qpopper[15327]: Error setting certificate PEM file
>Jan 16 11:16:51 tt qpopper[15327]: ...SSL error: error:0200100E:system library:fopen:Bad address
>Jan 16 11:16:51 tt qpopper[15327]: ...SSL error: error:20074002:BIO routines:FILE_CTRL:system lib
>Jan 16 11:16:51 tt qpopper[15327]: ...SSL error: error:140AD002:SSL routines:SSL_CTX_use_certificate_file:system lib
>Jan 16 11:16:51 tt qpopper[15327]: Failed initializing TLS/SSL
>
>p.s. сертификат самоподписанный (сделан по аналогии с работающим апачевским)
>
>что не так?1. Создаем заготовку конфига mail.cnf (название любое)
в ней все прозрачно, но by defaul строки:
---------------------------- quote for dialog ---------------------------
[ req_dn ]
countryName = Country Name (2 letter code)
countryName_default = NO
countryName_min = 2
countryName_max = 2stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Some-StatelocalityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
0.organizationName_default = FooBar Inc.organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default =0.commonName = Common Name (FQDN of your server)
1.commonName = Common Name (default)
1.commonName_value = localhost
---------------------------- end of quote --------------------------------это неудобно, потому что приходится в диалоге заполнять поля по шаблону.
Тонкость в том, что в filename.cnf, чтобы избежать диалога, необходимо
добавить строку:prompt = no
~~~~~~~~~~~
а в секции req_dn заполнить поля реальными значениями, которая задается в:
distinguished_name = req_dnЕсли у нас в distinguished_name = my_data, то браться будет секция:
[ my_data ]
...
...
real parameters
---------------------------- cut mail.cnf ----------------------------
HOME= .
RANDFILE = $ENV::HOME/.rnd[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no#[ req_dn ]
#countryName = Country Name (2 letter code)
#countryName_default = NO
#countryName_min = 2
#countryName_max = 2
#
#stateOrProvinceName = State or Province Name (full name)
#stateOrProvinceName_default = Some-State
#
#localityName = Locality Name (eg, city)
#
#0.organizationName = Organization Name (eg, company)
#0.organizationName_default = FooBar Inc.
#
#organizationalUnitName = Organizational Unit Name (eg, section)
##organizationalUnitName_default =
#
#0.commonName = Common Name (FQDN of your server)
#
#1.commonName = Common Name (default)
#1.commonName_value = localhost#--lavr, удалить строки комментариев (#) и пользовать в удовольствие
[ req_dn ]
#C=двухбуквенный код страны
C=RU
#ST=Штат/Провинция/Область/Район
ST=Moscow Region
#L=город/село
L=Dubna Town
#O=Наименование Организации
O=Lavr Co.
#OU=Наименование ответственной организации
OU=Lavr CA
#CN=полное доменное(FQDN) имя телеги для которой генерится сертификат и на
# которой будет сервис работающий через SSL с этим сертификатом
CN=lavr.pp.ru
#Email=почтовый адрес ответственного лица
Email=lavr@dubna.ru[ cert_type ]
nsCertType = server------------------------------ end of cut -------------------------------
2. После того как конфиг готов, выполняем пару команд и сертификат в кармане:
openssl req -new -x509 -days 999 -nodes -config mail.cnf -out stunnel.pem -keyout stunnel.pem
3. Просмотр и получение требуемой информации из созданного сертификата:
openssl x509 -subject -dates -fingerprint -noout -in stunnel.pem
или
openssl x509 -text -in stunnel.pemиспользование ключей зависит от того что и как хотим посмотреть
4. Проверка сервисов работающих через SSL:
openssl s_client -connect hostname:port -state -debug
- hostname - имя хоста или fqdn
- port - соответствующий порт сервиса с ssl: 443 или 993 или 995Использование сертификатов в почтовых агентах:
1. Unix
Если у нас самоподписные сертификаты, то в pine/mutt и других MTA работающих через SSL, я обычно использую: imap/ssl/novalidate-cert (см. документацию), либо добавить сертификат как доверительный
2. Windows
Вырезаем из сгенеренного pem-файла сертификат, и кладем в доступное на шаре - для сети или на www для клиентов место для возможности download
После чего в клиенте находим место где всасываются сертификаты: в нашем случае расширение crt (это не принципиально - там любое можно задать, важно содержание этого файла, дальше получаю запрос как добавить - автоматом, Да, после чего данный сертификат кладется в trusted - доверительные)
Все, работа Windoze Mail-Agents по IMAP/POP3 via SSL происходит без вопросов.PS. Могу ошибаться, но в четвертой версии OE какая-то хрень с работой IMAP и с работой SSL, must be upgrade (что конкретно - не помню)
спасибо за совет по созданию сертификата.
сертификат сделал по образу и подобию, но при проверки
$ openssl s_client -connect 127.0.0.1:995 -state -debug
CONNECTED(00000003)
SSL_connect:before/connect initialization
write to 0814ED40 [0814F378] (124 bytes => 124 (0x7C))
[bla-bla-bla]
SSL_connect:SSLv2/v3 write client hello A
read from 0814ED40 [081548D8] (7 bytes => -1 (0xFFFFFFFF))
SSL_connect:error in SSLv2/v3 read server hello A
write:errno=104не подскажешь куда копать дальше?
вроде и qpopper'у сказал стартовать через альтернативный порт...
>спасибо за совет по созданию сертификата.
>сертификат сделал по образу и подобию, но при проверки
>$ openssl s_client -connect 127.0.0.1:995 -state -debug
>CONNECTED(00000003)
>SSL_connect:before/connect initialization
>write to 0814ED40 [0814F378] (124 bytes => 124 (0x7C))
>[bla-bla-bla]
>SSL_connect:SSLv2/v3 write client hello A
>read from 0814ED40 [081548D8] (7 bytes => -1 (0xFFFFFFFF))
>SSL_connect:error in SSLv2/v3 read server hello A
>write:errno=104
>
>не подскажешь куда копать дальше?
>вроде и qpopper'у сказал стартовать через альтернативный порт...
qpopper должен знать где лежит сертификат, а сертификат должен быть
правильно сгенерен (смотри какие данные подставлял: CN=FQDN на котором висит pop daemon
>qpopper должен знать где лежит сертификат, а сертификат должен быть
>правильно сгенерен (смотри какие данные подставлял: CN=FQDN на котором висит pop daemon
>CN правильное(в апаче все ок)
а вот с расположением сертификата затык получается:
я указывал ему "левое" расположение - таже ошибка.
такое впечатление что он вообще не видит этого сертификата :-(не могли бы Вы показать кусок qpopper.config и xinetd на предмет ключей запуска qpopper?
>>qpopper должен знать где лежит сертификат, а сертификат должен быть
>>правильно сгенерен (смотри какие данные подставлял: CN=FQDN на котором висит pop daemon
>>
>
>CN правильное(в апаче все ок)
>а вот с расположением сертификата затык получается:
>я указывал ему "левое" расположение - таже ошибка.
>такое впечатление что он вообще не видит этого сертификата :-(
>
>не могли бы Вы показать кусок qpopper.config и xinetd на предмет ключей
>запуска qpopper?увы, у меня нет ни qpopper'а ни xinetd
Спасибо lavr огромное.
затык был в моих кривых руках :-)
завернув qpopper через xinetd я забыл совершенно про hosts.allowp.s. напоследок вопрос: каким попером ты пользуешься?
>Спасибо lavr огромное.
>затык был в моих кривых руках :-)
>завернув qpopper через xinetd я забыл совершенно про hosts.allow
>
>p.s. напоследок вопрос: каким попером ты пользуешься?везде по разному, где правленный комплект imap-uw с запретом доступа к
портам imap/pop3 извне и взамен imaps/pop3s, где apop3d и другие в зависимости от задач и политики конкретного сервера