Страница 1 из 1
Проблема с HTTPS после патча SSL или ОСТОРОЖНО ОБНОВЛЕНИЕ!
Добавлено: 2009-12-07 13:06:17
kpp
ОСТОРОЖНО С ОБНОВЛЕНИЕМ CVE-2009-3555 (2009-12-03 FreeBSD-SA-09:15.ssl) - ГРАБЛИ!!!
Если коротко, то в патче закрыли некую уязвимоть SSL, но при этом стала полностью невозможна аутентификация клиента по сертификату.
Поэтому есть два пути: либо не ставить патч или отказываться от аутентификации по сертификатам...
Ситуация следующая.
Есть FreeBSD 7.2-RELEASE-p3.
Вышли обновления
http://security.freebsd.org/advisories.html
Установил обновления :
Код: Выделить всё
2009-12-03 FreeBSD-SA-09:17.freebsd-update
2009-12-03 FreeBSD-SA-09:16.rtld
2009-12-03 FreeBSD-SA-09:15.ssl
Пересобрал мир.
Теперь FreeBSD 7.2-RELEASE-p5. Все работает.
Апач(Apache 2.2) настроен так, что доступ на некоторые странички возможен только при наличии у клиента нужного SSL-сертификата.
Так вот теперь если попытаться перейти на такие странички, броузер выдает сообщение типа:
Код: Выделить всё
Вы попытались получить доступ к адресу https://ляля-ля, который сейчас недоступен. Убедитесь, что веб-адрес (URL) введен правильно, и попытайтесь перезагрузить страницу.
Безопасное подключение: критическая ошибка (40) с сервера
https://ляля-ля
Ошибка подключения к серверу. Возможно, методы шифрования, поддерживаемые сервером, не включены в настройках безопасности.
Если зайти на доступные без клиентского сертификата страницы по HTTPS, все в порядке.
При этом до всех вышеперечисленных действий работало.
Попробовал перегенерить все SLL-сертификаты - результат тотже.
Переставил Apache - результат тотже.
Подскажите куда копать, что делать?
Re: Проблема с HTTPS после патча SSL с послед. пересбором мира
Добавлено: 2009-12-07 13:13:48
iye
А в логи что нибудь пишет ?
Re: Проблема с HTTPS после патча SSL с послед. пересбором мира
Добавлено: 2009-12-07 13:26:08
kpp
В /var/log/httpd-error.log пишет
при рестарте Апача:
Код: Выделить всё
[Mon Dec 07 12:22:20 2009] [notice] SIGHUP received. Attempting to restart
[Mon Dec 07 12:22:20 2009] [warn] (2)No such file or directory: Failed to enable the 'dataready' Accept Filter
[Mon Dec 07 12:22:20 2009] [warn] (22)Invalid argument: Failed to enable the 'httpready' Accept Filter
[Mon Dec 07 12:22:21 2009] [notice] Digest: generating secret for digest authentication ...
[Mon Dec 07 12:22:21 2009] [notice] Digest: done
[Mon Dec 07 12:22:22 2009] [notice] Apache/2.2.13 (FreeBSD) mod_ssl/2.2.13 OpenSSL/0.9.8l DAV/2 PHP/5.2.11 with Suhosin-Patch Phusion_Passenger/2.2.5 SVN/1.6.6 Apache/2.2.x (FreeBSD) configured -- resuming normal operations
при попытке зайти на закрытую сертификатом страничку броузером(сертификат есть):
Код: Выделить всё
[Mon Dec 07 12:19:31 2009] [error] [client 0.0.0.0] Re-negotiation handshake failed: Not accepted by client!?
Такое ощущение, что ему не нравится клиентский сертификат...
Re: Проблема с HTTPS после патча SSL с послед. пересбором мира
Добавлено: 2009-12-07 13:34:10
iye
Апач собран с портов ? Порты обновлялись вместе с исходниками ?
Re: Проблема с HTTPS после патча SSL с послед. пересбором мира
Добавлено: 2009-12-07 13:35:52
kpp
Да, все из портов.
Порты обновлены 05.12.2009
В общем порты обновлялись вместе с исходниками.
Re: Проблема с HTTPS после патча SSL с послед. пересбором мира
Добавлено: 2009-12-07 13:46:57
iye
Я бы посмотрел что за опции там по дефолту для сборки апачи стоят и сравнил с тем что нужно.
И вот тут еще посмотреть:
http://www.vanemery.com/Linux/Apache/apache-SSL.html там написанно про мессагу которая в лог апачи валится.
Re: Проблема с HTTPS после патча SSL с послед. пересбором мира
Добавлено: 2009-12-07 13:51:51
kpp
На сколько я понимаю, при первой установке чего-либо из портов появляется зкран параметров(если есть), потом выбранные настройки сохраняются и при последующих перекомпиляциях параметры не показываются. Параметры можно вызвать make config , но зачем, если параметры не изменяются или я не прав?
В параметрых апача касательно SSL только один - одноименный.. Или еще есть?
Ссылка не открывается...
Re: Проблема с HTTPS после патча SSL с послед. пересбором мира
Добавлено: 2009-12-07 14:06:12
iye
Теперь и у меня не открывается .. общий смысл там был следующий : пишет оно эту бяку когда браузер не поддерживает ссл (и был дан список чего поддерживает) либо когда сертификат не установлен в браузере.
Re: Проблема с HTTPS после патча SSL с послед. пересбором мира
Добавлено: 2009-12-07 14:10:34
kpp
Гм.. еще 04.12.2009 этиже браузеры(Opera, IE) понимали SSL.
Клиентские сертификаты тоже были настроены и все замечально открывалось.
Видать поторопился я с обновлениями...
Теперь и не откатишься

Точно не скажу что является причиной:
- обновление
http://security.freebsd.org/advisories/ ... 15.ssl.asc
- пересборка мира;
- и то и другое в совокупности.
Re: Проблема с HTTPS после патча SSL с послед. пересбором мира
Добавлено: 2009-12-07 17:02:44
kpp
Если в Апаче отключить требование к наличию правильного сертификата клиента
- все странички открываются.
Значит дело однозначно в SSL.
Re: Проблема с HTTPS после патча SSL с послед. пересбором мира
Добавлено: 2009-12-07 17:19:58
Gamerman
Сертификаты чем создавались?
Re: Проблема с HTTPS после патча SSL с послед. пересбором мира
Добавлено: 2009-12-07 17:35:11
kpp
Сертификаты создавались консольной утилитой openssl.
Создание рутового сертификата CA :
Код: Выделить всё
openssl req -new -newkey rsa:1024 -x509 -days 3650 -nodes -keyout ca.key -out ca.crt
-subj /C=UA/ST=-/L=Kiev/O=KPP/OU=Main/CN=dp.ua/emailAddress=kpp@yandex.ru
Создание серверного сертификата :
Код: Выделить всё
openssl req -new -newkey rsa:1024 -keyout server.key -out server.csr \
-subj /C=UA/ST=-/L=Kiev/O=KPP/OU=SVN/CN=dp.ua/emailAddress=kpp@yandex.ru
openssl ca -config ca.config -in server.csr -out server.crt -batch
создание клиентского сертификата
Код: Выделить всё
openssl req -new -newkey rsa:1024 -nodes -keyout kpp.key -out kpp.csr \
-subj /C=UA/ST=-/L=Kiev/O=dp.ua/OU=SVN/CN=kpp/emailAddress=kpp@yandex.ru
#подписываем клиентский сертификат
openssl ca -config ca.config -in kpp.csr -out kpp.crt -batch
#подготавливает сертификат для передачи пользователю
#с паролем -passout pass:
openssl pkcs12 -export -in kpp.crt -inkey kpp.key -certfile ca.crt -out kpp.pl2
ca.config :
Код: Выделить всё
[ca]
default_ca<----><------><------>= CA_CLIENT
[CA_CLIENT]
dir<---><------><------><------>= ./db # Рабочий каталог для базы данных клиентских к
certs<-><------><------><------>= $dir/certs # Каталог для новых сертификатов
new_certs_dir<-><------><------>= $dir/newcerts # Каталог, куда будут складываться вы
database<------><------><------>= $dir/index.txt # Индекс базы данных для выписанных
serial<><------><------><------>= $dir/serial # Номер текущего ключа
certificate<---><------><------>= ./ca.crt # Собственно самоподписанный сертификат CA
private_key<---><------><------>= ./ca.key # Секретный ключ сертификата CA
default_days<--><------><------>= 365 # Время, на которое выписывается клиентский сер
default_crl_days<------><------>= 7 # Срок действия CRL
default_md<----><------><------>= md5 # Алгоритм подписи
policy<><------><------><------>= policy_anything # название секции политики
[ policy_anything ]
countryName<---><------><------>= optional # Разрешаем не указывать код страны
stateOrProvinceName<---><------>= optional # название штата или округа
localityName<--><------><------>= optional # название города\деревни
organizationName<------><------>= optional # название организации
organizationalUnitName<><------>= optional # название отдела
commonName<----><------><------>= supplied # Обязательно указать имя сайта
emailAddress<--><------><------>= optional # Почтовый адрес можно не указывать
Re: Проблема с HTTPS после патча SSL с последующ пересбором мира
Добавлено: 2009-12-07 18:26:07
Gamerman
Проверьте сертификаты командами типа:
Код: Выделить всё
openssl s_client -host myserver.org.net -port 443 -CAfile cacert.pem
Re: Проблема с HTTPS после патча SSL с последующ пересбором мира
Добавлено: 2009-12-07 18:35:47
kpp
Gamerman писал(а):Проверьте сертификаты командами типа:
Код: Выделить всё
openssl s_client -host myserver.org.net -port 443 -CAfile cacert.pem
Проверил клиентский сертификат kpp.crt .
Код: Выделить всё
openssl s_client -host myserver.org.net -port 443 -CAfile kpp.crt
...
Verify return code: 19 (self signed certificate in certificate chain)
Re: Проблема с HTTPS после патча SSL с последующ пересбором мира
Добавлено: 2009-12-07 18:58:33
Gamerman
Вроде сертификаты добрые.
По идее можно в апаче настроить логирование ССЛ. Посмотрите, что там будет писать, плюс включите режим логирования debug.
Re: Проблема с HTTPS после патча SSL с последующ пересбором мира
Добавлено: 2009-12-07 22:16:04
kpp
Включил дебаг.
При попытке зайти на страницу в логе следующее:
Код: Выделить всё
[Mon Dec 07 21:13:03 2009] [info] Initial (No.1) HTTPS request received for child 0 (server dp.ua:443)
[Mon Dec 07 21:13:03 2009] [debug] ssl_engine_kernel.c(487): [client 192.168.0.2] Changed client verification type will force renegotiation
[Mon Dec 07 21:13:03 2009] [info] [client 192.168.0.2] Requesting connection re-negotiation
[Mon Dec 07 21:13:03 2009] [debug] ssl_engine_kernel.c(724): [client 192.168.0.2] Performing full renegotiation: complete handshake protocol
[Mon Dec 07 21:13:03 2009] [info] [client 192.168.0.2] Awaiting re-negotiation handshake
[Mon Dec 07 21:13:03 2009] [debug] ssl_engine_kernel.c(1875): OpenSSL: Handshake: start
[Mon Dec 07 21:13:03 2009] [debug] ssl_engine_kernel.c(1883): OpenSSL: Loop: before accept initialization
[Mon Dec 07 21:13:03 2009] [debug] ssl_engine_kernel.c(1893): OpenSSL: Write: SSLv3 read client hello A
[Mon Dec 07 21:13:03 2009] [debug] ssl_engine_kernel.c(1912): OpenSSL: Exit: error in SSLv3 read client hello A
[Mon Dec 07 21:13:03 2009] [error] [client 192.168.0.2] Re-negotiation handshake failed: Not accepted by client!?
Причем в не зависимости от того верный клиентский сертификат был использован или устаревший.
Немного офтоп, но: зачем переносить данную тему в Проблемы-Софт ? Проблема системы(FreeBSD) после обновления, а не софта. OpenSSL - это софт или часть системы?
Апач - софт, но проблема не в нем.
Ну да ладно, модераторам виднее...
Re: Проблема с HTTPS после патча SSL с последующ пересбором мира
Добавлено: 2009-12-07 22:32:05
Gamerman
Используя связку Apache2, php5 и авторизацию по клиентским сертификатам, натыкаемся на ошибку. В лог-файле error.log это выгладит как
[error] Re-negotiation handshake failed: Not accepted by client!?
Рельно же при выполнении запроса с передачей данных методом POST, данные просто не передаются. Решается это добавлением опции в настройку apache’а:
<Location />
SSLVerifyClient require
SSLVerifyDepth 1
SSLOptions +OptRenegotiate
</Location>
главная опция
SSLOptions +OptRenegotiate
Взято тут:
http://blog.crosunit.ru/2009/03/18/ispo ... i/#more-75
Re: Проблема с HTTPS после патча SSL с последующ пересбором мира
Добавлено: 2009-12-07 22:43:49
kpp
Добавил опцию
Перезапустил Апач.
Все без изменений.
Код: Выделить всё
Mon Dec 07 21:41:45 2009] [info] Initial (No.1) HTTPS request received for child 0 (server dp.ua:443)
[Mon Dec 07 21:41:45 2009] [debug] ssl_engine_kernel.c(487): [client 1.1.3.2] Changed client verification type will force renegotiation
[Mon Dec 07 21:41:45 2009] [info] [client 1.1.3.2] Requesting connection re-negotiation
[Mon Dec 07 21:41:45 2009] [debug] ssl_engine_kernel.c(724): [client 1.1.3.2] Performing full renegotiation: complete handshake protocol
[Mon Dec 07 21:41:45 2009] [info] [client 1.1.3.2] Awaiting re-negotiation handshake
[Mon Dec 07 21:41:45 2009] [debug] ssl_engine_kernel.c(1875): OpenSSL: Handshake: start
[Mon Dec 07 21:41:45 2009] [debug] ssl_engine_kernel.c(1883): OpenSSL: Loop: before accept initialization
[Mon Dec 07 21:41:45 2009] [debug] ssl_engine_kernel.c(1893): OpenSSL: Write: SSLv3 read client hello A
[Mon Dec 07 21:41:45 2009] [debug] ssl_engine_kernel.c(1912): OpenSSL: Exit: error in SSLv3 read client hello A
[Mon Dec 07 21:41:45 2009] [error] [client 1.1.3.2] Re-negotiation handshake failed: Not accepted by client!?
Это лог при запуске Апача:
Код: Выделить всё
[Mon Dec 07 21:41:28 2009] [info] Loading certificate & private key of SSL-aware server
[Mon Dec 07 21:41:28 2009] [info] dp.ua:443 reusing existing RSA private key on restart
[Mon Dec 07 21:41:28 2009] [info] Configuring server for SSL protocol
[Mon Dec 07 21:41:28 2009] [debug] ssl_engine_init.c(414): Creating new SSL context (protocols: SSLv2, SSLv3, TLSv1)
[Mon Dec 07 21:41:28 2009] [debug] ssl_engine_init.c(547): Configuring client authentication
[Mon Dec 07 21:41:28 2009] [debug] ssl_engine_init.c(1142): CA certificate: /C=UA/ST=-/L=Kiev/O=KPP/OU=Main/CN=dp.ua/emailAddress=kpp@yandex.ru
[Mon Dec 07 21:41:28 2009] [debug] ssl_engine_init.c(610): Configuring permitted SSL ciphers [ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL]
[Mon Dec 07 21:41:28 2009] [debug] ssl_engine_init.c(741): Configuring RSA server certificate
[Mon Dec 07 21:41:28 2009] [debug] ssl_engine_init.c(780): Configuring RSA server private key
А вот и причина, похоже...
http://www.phocean.net/2009/11/28/opens ... akage.html
https://bugzilla.redhat.com/show_bug.cgi?id=533125
http://old.nabble.com/TLS-renegotiation ... 85568.html
Напомню: я поставил пачт на openSSL
http://security.freebsd.org/advisories/ ... 15.ssl.asc
Код: Выделить всё
BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
=============================================================================
FreeBSD-SA-09:15.ssl Security Advisory
The FreeBSD Project
Topic: SSL protocol flaw
Category: contrib
Module: openssl
Announced: 2009-12-03
Credits: Marsh Ray, Steve Dispensa
Affects: All supported versions of FreeBSD.
Corrected: 2009-12-03 09:18:40 UTC (RELENG_8, 8.0-STABLE)
2009-12-03 09:18:40 UTC (RELENG_8_0, 8.0-RELEASE-p1)
2009-12-03 09:18:40 UTC (RELENG_7, 7.2-STABLE)
2009-12-03 09:18:40 UTC (RELENG_7_2, 7.2-RELEASE-p5)
2009-12-03 09:18:40 UTC (RELENG_7_1, 7.1-RELEASE-p9)
2009-12-03 09:18:40 UTC (RELENG_6, 6.4-STABLE)
2009-12-03 09:18:40 UTC (RELENG_6_4, 6.4-RELEASE-p8)
2009-12-03 09:18:40 UTC (RELENG_6_3, 6.3-RELEASE-p14)
CVE Name: CVE-2009-3555
Имя патча
CVE-2009-3555
OpenSSL : CVE-2009-3555 security fix and mod_ssl client authentication breakage
A security advisory on OpenSSL has recently been published. Details are there and there.
It is vulnerable to a MiTM attack where the attacker can intercept and retrieve the credential to a trusted HTTPS website, by intercepting the session cookie sent back to the client.
A proof of concept of an attack against Twitter was made.
Fine. But so far, the answer was to just disable any renegociation.
This actually causes some issues with SSL session timeout and totally broke client authentication.
I got into problems because of the latter. I am using client authentication for some location of my web server, and I recently could not connect anymore to these with the following log in apache :
[Tue Nov 24 16:56:15 2009] [debug] ssl_engine_kernel.c(1912): OpenSSL:Exit: error in SSLv3 read client hello A
[Tue Nov 24 16:56:15 2009] [error] [client x.x.x.x] Re-negotiation handshake failed: Not accepted by client!?
I first was not aware of the openssl patch and tried almost anything possible. My focus was, of course, on the certificate and the client.
But, a nice guy on IRC #suse, Stittel, had a good hunch and suggested me to look at the CVE-2009-3555 fix.
After more tests, it was quickly confirmed to work well with older versions of OpenSSL (as shipped in Debian Lenny).
Finally, I downgraded the OpenSSL version on my openSUSE box to a version prior to the CVE-2009-3555 fix and it just worked fine.
Then, I dig into it and found a lot of interesting reports there and there. So far it is a real mess.
In short, the breakage will stay as long as browsers don’t also include a patch to avoid renegotiation.
So far, I could not find a browser that does include a patch.
If anyone reading it knows a version that does it, please let me know.
Meanwhile, you have actually the choice between :
low security by deactivating client authentication on your server
low security by keeping a vulnerable version of OpenSSL
Если коротко, то в патче закрыли некую уязвимоть SSL, но при этом стала полностью невозможна аутентификация клиента по сертификату.
Поэтому есть два пути: либо не ставить патч или отказываться от аутентификации по сертификатам...
Вот такая петрушка...
Просто нет слов

Re: Проблема с HTTPS после патча SSL или ОСТОРОЖНО ОБНОВЛЕНИЕ!
Добавлено: 2009-12-07 23:57:22
kpp
Кто подскажет как теперь корректно откатиться...

Re: Проблема с HTTPS после патча SSL или ОСТОРОЖНО ОБНОВЛЕНИЕ!
Добавлено: 2009-12-08 0:02:21
Gamerman
Блин! Пропатчили называется!
Re: Проблема с HTTPS после патча SSL или ОСТОРОЖНО ОБНОВЛЕНИЕ!
Добавлено: 2009-12-08 17:21:16
kpp
Так что, какие идеи на счет отката?
Как правильно сделать?
Просто взять старые исходники
Код: Выделить всё
src/crypto/openssl/ssl/s3_pkt.c 1.1.1.12.8.1
src/crypto/openssl/ssl/s3_srvr.c 1.1.1.17.2.1.2.1
src/crypto/openssl/ssl/s3_lib.c 1.1.1.13.8.1
и перекомпилить ядро или нужно опять мир пересобирать, и вопрос: пересобирется ли мир ?
Куда обращаться чтобы разработчики меня услышали, и, возможно, исправили эту несправедливость?