LINUX.ORG.RU
ФорумAdmin

[SSL][CRT] Сертификаты, Apache2, jabberd2, postfix и все-все-все

 ,


0

0

Собрался настроить HTTPS и SSL в почте. А также в других сервисах. Ubuntu 9.04 Server, весь софт последний из аптов.

Но эка незадача! Фуррифокс (3.0.x) выдаёт следующую ругань:

SSL received a record that exceeded the maximum permissible length.

(Error code: ssl_error_rx_record_too_long)

По справке верзиллы(тм) эта ошибка значит: «SSL-пакет просто неправильный или не соответствует стандартам. Так-то.»

Перечитал ТОННЫ страниц про то как генерить сертификалии. Даже написал свой батник:

# generate private key
openssl genrsa -des3 -out server.key 2048

# create insecure version of a key (browsers will not prompt for password)
openssl rsa -in server.key -out server_ins.key
mv -f server.key server_sec.key

chmod 600 server_ins.key
chmod 600 server_sec.key

# create CSR and self-signed certificate
openssl req -new -key server_sec.key -out server_sec.csr -multivalue-rdn -subj  "/C=RU/ST=none/L=Moscow/O=My Corp./OU=IPS/CN=mysite.com/emailAddress=ips@mysite.com"
openssl x509 -req -days 3660 -in server_sec.csr -signkey server_sec.key -out server_sec.crt
openssl req -new -key server_ins.key -out server_ins.csr -multivalue-rdn -subj "/C=RU/ST=none/L=Moscow/O=My Corp./OU=IPS/CN=mysite.com/emailAddress=ips@mysite.com"
openssl x509 -req -days 3660 -in server_ins.csr -signkey server_ins.key -out server_ins.crt

# copy these to approriate locations
cp server_ins.crt /etc/ssl/certs
cp server_sec.crt /etc/ssl/certs
cp server_ins.key /etc/ssl/private
cp server_sec.key /etc/ssl/private

#special PEMs for SMTP
openssl req -new -x509 -extensions v3_ca -keyout ca_key.pem -out ca_cert.pem -days 3660 -multivalue-rdn -subj "/C=RU/ST=none/L=Moscow/O=My Corp./OU=IPS/CN=mysite.com/emailAddress=ips@mysite.com"
cp ca_key.pem /etc/ssl/private
cp ca_cert.pem /etc/ssl/certs

В sites-available-ssl сертификаты прописал, /etc/init.d/apache2 restart делал. Эффекта NULL.

PLEASE F1! Я не понимаю этих grepаных ключей, сертификатов и пемов. Просто тупо скажите, что я не так делаю и как сделать правильно! И ещё - как защитить файлы - какие пермишшены выставить чтоб никто не спёр но апач, джаббер и мыльные сервисы их могли читать? Сроки жмут как китайские кроссовки!


лень читать твой батник, просто сделай так как говорит гугл по теме "self signed certificate"

true_admin ★★★★★
()

Apache error.log выдаёт при обращении по HTTPS://
[code]
[notice] Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch mod_ssl/2.2.11 OpenSSL/0.9.8g configured -- resuming normal operations
[error] [client <ip>] Invalid method in request \x16\x03\x01
[error] [client <ip>] Invalid method in request \x16\x03\x01
[/code]

xawari
() автор топика

Хоть бы конфиг апача показал, что ли.

undertaker ★★
()

>В sites-available-ssl сертификаты прописал

1. a2ensite сделать не забыл?
2. Учти, что на одном порту и/или айпишнике может быть только один https-сайт, т.е. name-based virtual hosting не прокатит.

nnz ★★★★
()
Ответ на: комментарий от nnz

true_admin
приз за традиционный ЛОРовский идиотский ответ - в студию!

nnz
да. раньше у меня как-то phpmyadmin работал, а сейчас даже он накрылся этой ошибкой.
/etc/apache2/ports.conf:
//--------------------------------------------------------
NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
# SSL name based virtual hosts are not yet supported, therefore no
# NameVirtualHost statement here
Listen 443
</IfModule>
//--------------------------------------------------------

/etc/apache2/sites-available/default я не трогал,
/etc/apache2/sites-available/default-ssl:
//--------------------------------------------------------
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/ssl_access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server_sec.crt
SSLCertificateKeyFile /etc/ssl/private/server_sec.key
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>
</IfModule>
//--------------------------------------------------------

ВСЕ МОДЫ ДЛЯ АПАЧА В UBUNTU SERVER ВКЛЮЧЕНЫ ПО УМОЛЧАНИЮ!
и вообще речь не столько об опаче... мыло не работает тоже!

МБ надо было вписывать server_ins.* ? (т.е. не защищённые паролем версии)
Может, права на файлы не те? Апач не ругается, что не может рпочитать сертификаты/ключи! Как проверить?
Что делать??
*Kernel panic!*

xawari
() автор топика

>record that exceeded the maximum permissible length.

Не знаю, почему, но то, что уходит в порт просто не является SSL-ем. Готов спорить на бутыль коньяку, но в Москву не планирую :)

DonkeyHot ★★★★★
()
Ответ на: комментарий от xawari

Когда нечего сказать по теме люди переходят на оскорбления. Если ничего не понимаешь в ssl то нехрен выпендриваться, делай по инструкции которая написана для таких как ты: http://www.akadia.com/services/ssh_test_certificate.html

true_admin ★★★★★
()

>Даже написал свой батник

палишься? а вообще, посмотри, можно ли заюзать подписанные халявные сертификаты от xmpp.org. к жабир серваку они подключались, а вот к почте и web я не пробовал. можешь стать первым.

awesome
()

*Задумчиво*

А в RHEL по дефолту лежит /etc/httpd/conf/Makefile, генерящий нужные сертификаты... Безо всякой художественной самодеятельности.

В Дебиане вместо этого есть занятная фиговина CA.pl (лежит /usr/lib/ssl/misc), однако с ней работать не приходилось.

nnz ★★★★
()
Ответ на: комментарий от nnz

это из поставки пакета openssl. Там, вроде, был ещё sh-скрипт который рекомендуют юзать.

true_admin ★★★★★
()
Ответ на: комментарий от awesome

awesome
>палишься?

Ну да, default city и My Corp. - это всё моё. =)
Сертификат с подписью xmpp.org мне, вобщем-то, не нужен. У меня проблема лишь в том чтобы заставить апач, жабу и всех остальных использовать один и тот же сертификат (ключ).

nnz
Первый раз слышу.
...
Нашёл.
CA.sh - то же что у меня, только навороченное и заставляет вводить данные руками.

true_admin
Чтобы не было недопониманий:
когда кто-то пишет что предварительно перечитал большой объём литературы, а ему советуют снова отправиться в гугел, он начинает сомневаться в адекватности овечавшего и раздражается. Ты, чай, тоже не родился со знанием всех протоколов.
Таких HOWTO у меня в букмарках уже штук десять, но легче не стало. Без причины я бы на ЛОР не стал спамить, верно?
also, что нового в том туторе, ссылку на который ты выложил? Кроме имён файлов отличий нет. Нет методик тестирования кроме захода на сайт и даже создание .pem не упомянуто.

----
В итоге, в CA.sh нашёл милую команду openssl verify %s, котрая (как и о-жид-алось) выдала "всё супер, только самоподписано".

Теперь думаю, почему не хотят работать апач с постфиксом и не срут в errorlog. =(

xawari
() автор топика
Ответ на: комментарий от xawari

>Сертификат с подписью xmpp.org мне, вобщем-то, не нужен. У меня проблема лишь в том чтобы заставить апач, жабу и всех остальных использовать один и тот же сертификат (ключ).

сертификат будет не с подписью xmpp.org, а с подписью на твой домен. и тогда приложения не будут на него ругаться. xmpp.org - это для того, чтобы его там взять. или подписать свой у них.

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

awesome
()
Ответ на: комментарий от xawari

Там гарантированно получается рабочий сертификат Сначала сгенерь хотя бы один нормальный сертификат а потом уже играйся с multivalue-rdn(который тебе сдесь не нужен), длиной ключа итп.

И я не понял зачем ты создаёшь два ключа и два сертификами. Зачем?

Если ты под pem пподразумеваешь незашифрованный ключ то всё там получается. Там даже по настройке апача что-то сказано.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Два потому что (так во всех HOWTO пишут):
один будет требовать пароль (защищённый),
а второй не будет (незащищённый).
Как я понял, для защищённого firefox будет выдавать окошко с логином и паролем. Т.е. в данный момент мне нужен insecure.

Под PEM я понимаю ещё один формат файла, который требует smtp или pop3 (точно не помню) и ещё кто-то.
Не совсем понимаю, правда, почему в моём случае пемы надо генерить отдельно (без уже сделанных в начале ключей). Опять же, сделано по чужому примеру.
Ещё я читал где-то, что PEM - это strcat() двух файлов (вроде .key и .crt), но это ложь и провокация.

Проверил права на файлы... Вроде такие же как и у соседних в /etc/ssl/xxx/

awesome
Я понимаю, но мне пока не нужно. Но за инфу спасибо.

xawari
() автор топика
Ответ на: комментарий от xawari

для почты никаких особых форматов не требуется, вся работа с ssl делается через openssl которому пофиг заворачивать в туннель почту или веб. pem это и есть тот формат в котором у тебя всё хранится.

> Два потому что (так во всех HOWTO пишут):

Можно посмотреть на такое хауту?

Ты провобал генерить сертификат по тому хауту что я предлагал?

true_admin ★★★★★
()
Ответ на: комментарий от xawari

>Что делать??

Всё ещё долбишся? Послушай меня, я правильный ответ сказал. Скорее всего твой default-ssl не включён в конфигурацию (grep Include по файлам), т.ч. Listen-443 приходится на умолчаетльный хост. Мне помогает apachectl -DDUMP_VHOSTS -- запусти, и убедись, что у тебя на 443-м порту висит _не_ хост из default-ssl.

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

true_admin
я юзал ~вот эти доки, если интересно:
http://www.tc.umn.edu/~brams006/selfsign.html
http://www.tc.umn.edu/~brams006/selfsign_ubuntu.html
http://blog.taragana.com/index.php/archive/openssl-how-to-create-self-signed-...
http://linuxopen.ru/2008/09/02/apache2-ssl-pod-debian.html
http://www.securitylab.ru/analytics/216405.php
http://httpd.apache.org/docs/2.0/mod/mod_ssl.html#ssloptions
http://silverghost.org.ua/2007/12/14/apache-mod_ssl/
http://www.mozilla.org/projects/security/pki/nss/ref/ssl/sslerr.html

Твой сейчас попробую.
...
Не, ну это смешно:
> Step 7: Restart Apache and Test

>

> /etc/init.d/httpd stop

> /etc/init.d/httpd stop

>

> https://public.akadia.com

>

Сгенерил я всё это копипастой.

DonkeyHot:
Долблюсь. Несколько дней не было возможности ничего сделать, вот счас снова сел.

~ apache2ctl -DDUMP_VHOSTS

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server mysite.ru (/etc/apache2/sites-enabled 000-default:1)
port 80 namevhost mysite.ru (/etc/apache2/sites-enabled 000-default)
Syntax OK

Не совсем понял, о чём ты. Дефолтный хост не должен работать с SSL? Но прописано же.
Не понимаю, почему PHPMyAdmin работал... o_O
Сейчас и он не работает, увы.

-------
Как отследить, приходит браузеру SSL или не-SSL ответ?

ПРОГРЕСС! (или деградация нафиг) https://mysite.ru

Data Transfer Interrupted
The connection to mysite.ru was interrupted while the page was loading.

xawari
() автор топика
Ответ на: комментарий от xawari

>~ apache2ctl -DDUMP_VHOSTS

Подсказка: в выводе должно присутствовать что-то типа:

*:443 название.vхоста (/путь/к/конфигу/default-ssl:номер строки)

Его там нет. Что означает, что defaut-ssl ты поправил, но apache его не читает. Нужно добавить в httpd.conf (или ещё куда) примерно такое:

Include .../default-ssl

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

А-ХРИ-НЕТЬ. Нет слов.
Каким-то образом из sites-enabled исчез симлинк на sites-available/default-ssl

"a2ensite default-ssl"

И всё ОК.
Теперь думаю насчёт почты и прочего.
Возникает вопрос: для postfix/dovecot/jabberd2 использовать server_sec.srt или server_ins.crt?
И нафига мне теперь ca_cert.*?

(алсо плавно возвращаюсь к теме http://www.linux.org.ru/view-message.jsp?msgid=3792281 )

xawari
() автор топика
Ответ на: комментарий от xawari

ejabberd2 просит:

<!-- File containing an SSL certificate and private key to use when
setting up an encrypted channel with the router. From
SSL_CTX_use_certificate_chain_file(3): "The certificates must be
in PEM format and must be sorted starting with the subject's
certificate (actual client or server certificate), followed
by intermediate CA certificates if applicable, and ending
at the highest level (root) CA" (the latter one being optional).
If this is commented out, or the file can't be read, no attempt
will be made to establish an encrypted channel with the router. -->
<!--
<pemfile>/etc/jabberd2/server.pem</pemfile>
-->

Попробую сгенерить ca.crt и сделать
cat server_ins.crt server_ins.key ca.crt > server_ins.pem
cat server_sec.crt server_sec.key ca.crt > server_sec.pem

Мда. Из http://www.tc.umn.edu/~brams006/selfsign.html следует, что мне придётся переписывать весь батник по-новой с учётом ca.crt

whatever >_>

xawari
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.