wordpress SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Вот странная ошибка, на мой взгляд.

По логике, это должно означать, что wordpress, не смог средствами операционной системы в которой он установлен проверить валидность сертификата, и соединяться не стал. Но нет. Средствами ОС он этого сделать не может, и что бы оставить движек максимально простым в использовании, разработчики пошли на не совсем простой шаг. Встроили проверку сертификата вместе с хранилищем сертификатов в сам wordpress.

Если вы попали сюда из поисковика, в поиске решения этой ошибки, то лечится она легко:

Достаточно в директорию wp-includes/certificates положить файл http://curl.haxx.se/ca/cacert.pem под именем ca-bundle.crt

А теперь, чем меня насторожило такое решение. Дело в том, что движки подобные wordpress легко ломаются, всегда найдется пара не пропатченных багов. А загрузка файлов через SSL не стартует без проверки подлинности, на случай, если нам пытаются подсунуть левый контент посредством атаки Men in middle.

Получается, что проверку подлинности сервера можно легко отключить, путем замены файла ca-bundle.crt на свой, где будет добавлен сфабрикованный корневой сертификат которым будет подписан сертификат узла men in middle.

 

UPD: Как показала практика, не везде можно решить проблему таким образом.

На сайте разработчиков curl нашел вот что: http://osdir.com/ml/web.curl.php/2007-02/msg00008.html

Суть в том, что если у вас установлена версия curl из перечисленных:

>libcurl/7.10.3 OpenSSL/0.9.6g
> libcurl/7.12.1 OpenSSL/0.9.7a
> libcurl/7.11.2 OpenSSL/0.9.7c

То без обновления curl не обойтись.

SSH без ввода пароля

Сегодня коллега писал скрипт, и для упрощения процесса было необходимо копировать файлы с одного linux хоста на другой без ввода пароля по scp. Раньше это нигде не использовал, поэтому пришлось немного маны покурить.

Во первых, если кому надо, то настраивается это крайне просто.

на хосте с которого будем подключаться нужно сгенерить ключ без пароля:

test_user@testhost:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test_user/.ssh/id_rsa):
/home/test_user/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/test_user/.ssh/id_rsa.
Your public key has been saved in /home/test_user/.ssh/id_rsa.pub.
The key fingerprint is:
52:99:be:4f:fd:99:ce:4e:de:9c:38:95:b9:dd:b5:a3 test_user@testhost

после этого, содержимое файла /home/test_user/.ssh/id_rsa.pub добавить в /home/%username%/.ssh/authorized_keys на хосте КУДА будем подключаться, и именно тому пользователю, под которым будем подключаться. Можно это сделать в ручную, а можно запустив команду на хосте С КОТОРОГО будем логинится:

ssh-copy-id -i /home/test_user/.ssh/id_rsa.pub test_user@ip_address

После этого ssh %username%@ip_address не будет спрашивать пароль.

И вот на этом месте меня посетила не веселая мысль. Дело в том, что какой-нибудь малварь (примитивный скрипт на bash), запущенный с вашими правами на линукс хосте с установленным sshd, может элементарно открывать бэкдор для последющего входа по ssh.  Причем что бы обнаружить такой бэкдор не поможет никакой антивирус.

Как конвертировать ext3 в ext4

Много раз уже это делал, но руки все не доходили записать.

Что бы сконвертировать ext3 в ext4 достаточно одного заклиниания:

tune2fs -O extents,uninit_bg,dir_index /dev/DEV

где /dev/dev РАЗДЕЛ с файловой системой.

После этого нужно поменять в /etc/fstab ext3 на ext4, и перезагрузиться.

И вот тут есть ньюанс. У вас обязательно должен быть физический доступ к консоли, т.к. при перезагрузке произойдет проверка раздела на ошибки, и fsck спросит у вас разрешение внести изменения. На случай если вам будет обломно подключать монитор к системнику  ради нажатия одной кнопки, нужно будет нажать “F”.

Багаж из рук в руки

Хорошая новость пришла с портала CNEWS. И не одна…

Суть новости в том, что Российский стартап разработал технологию отслеживания багажа, для оптимизации логистики в аэропортах. К багажу будут лепить RFID метки, которые будут автоматически отслеживаться. В теории, это должно гарантировать, что ваша сумка, не улетит отдельно от вас,  в противоположном направлении.

В России, данная технология внедряется только в аэропорту “шереметьево”. Так же, технология внедряется в Таллине и Праге.

Подробности здесь: http://biz.cnews.ru/news/line/index.shtml?2015/02/12/592727

Неожиданное поведение tcpdump при перехвате пакетов из бриджа

Случайно обнаружил такое свойство tcpdump: если у вас есть бридж, в котором бегают пакеты не адресованные вам (грубо говоря на бридж зеркалируеться траффик адресованный не вам), то при попытке сделать

tcpdump -ne vlan 9

программа не видит пакетов.

Если же записать дамп в файл (без указания vlan), а потом просмотреть его

tcpdump -r dump.file vlan 9

то все работает, и исправно показывает.

Проверялось на Ubuntu 12.04.

Кстати еще убил немало времени разбираясь почему tcpdump не пишет дамп файлы в папку /opt (на самом деле в любую отличную от /home, /var и т.д.), оказалось, что для tcpdump по умолчанию включен apparmor в enforce.

А еще в Ubuntu 12.04 по умолчанию включен apparmor, и tcpdump не хочет писать файлы например в /opt.

Что бы снять ограничение нужно перевести профиль для tcpdump в режим complain, как это сделать я писал здесь: https://pustovoi.ru/2009/778

Windows XP смена часового пояса через консоль

В догонку к заметке о настройке часовых поясов в linux, добавлю, как это сделать в богомерзкой winxp.

Получить список часовых поясов известных системе можно с помощью:

reg query “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones”

получим длинный список, вот часть из того что получил я:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\US Mountain Standard Time
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Vladivostok Standard Time
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\W. Australia Standard Time
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\W. Central Africa Standard Time
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\W. Europe Standard Time

мне был интересен часовой пояс владивостока (потому что в XP якутский почему то был +9, а мне нужен +10)

изменить часовой пояс можно так:

Control.exe TIMEDATE.CPL,,/Z Vladivostok Standard Time

узнать какой часовой пояс установлен в системе в данный момент можно так:

reg query “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation”

ответ получаем вот в таком виде:

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
Bias        REG_DWORD       0xfffffda8
StandardName        REG_SZ  Владивосток (зима)
StandardBias        REG_DWORD       0x0
StandardStart       REG_BINARY      00000A00050003000000000000000000
DaylightName        REG_SZ  Владивосток (лето)
DaylightBias        REG_DWORD       0xffffffc4
DaylightStart       REG_BINARY      00000300050002000000000000000000
ActiveTimeBias      REG_DWORD       0xfffffda8

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

UPD. Так же рекомендую ознакомиться вот с этим постом: http://goblinid.livejournal.com/99675.html

Регистронезависимый поиск руских слов в trac

Последнее время все чаще и чаще начали пользовать для внутренних нужд на работе trac. Причем если на первых порах у нас был отдельный движек под wiki и отдельно под исходники и тикеты трак, то в последствии плавно переехали на один единый движек, ибо удобно. Но недавно обнаружили досадный баг, если в поиске трака искать слова из не латинских букв, то поиск получается регистрозависимый.

Вся беда в sqlite, и если перетащить базу в pgsql, то проблема решиться сама собой (сам не пробовал), подробнее про эту проблему можно почитать тут:

http://trac.edgewall.org/ticket/7902
http://trac.edgewall.org/ticket/10327
http://trac.edgewall.org/ticket/5720

Сперва хотел перевести базу в MySQL, но обнаружились проблемы с конвертированием дампа (у sqlite и mysql несколько отличается синтаксис), а так же проблемы с совместимостью с MySQL. Поэтому было принято решение допиливать SqLite.

Решение в общем то есть, вот тут (ссылка) лежит исходник плагина для sqlite реализующего нужный функционал, но по пути были встречены разнообразные грабли, и вот как их обойти. Читать

На днях была новость, что в skype скоро появится функция синхронного перевода, т.е. при разговоре с иностранцем его речь будет автоматом переводиться на ваш родной язык.

Мне попутно такая мысль пришла, что в недалеком будущем, будет, например в watsapp можно будет включить озвучку сообщений от контактов голосом, и не простым, а например для каждого контакта можно будет выбрать голос. Один кореш тебе голосом Джигурды вещает, и другой голосом Жирика, или Горбачева.

Мало того, если учитывать, что скайп преобразовывает речь в текст, затем его переводит, а затем озвучивает, то что мешает каждому контакту назначить “скин”? Например присоеденить контакту корефана “скин” того же Жирика, и когда он тебе звонит, его голос будет преобразовываться в текст, затем обрабатываться с учетом “скина”, например добавляя характерные для Жирика фразы и обороты, и затем озвучивать его речь. Т.е. в результате ты будешь говорить с жириком?!! Или наоборот, он будет с ним пиздеть )))

 

Думаю лет через 10, а может и раньше это будет реально.

Настройка ntpd

Введение.

На днях разбирался с настройкой ntpd, как оказалось возможности этого демона немного выходят за рамки “раздачи времени по сети”.

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

Итак. Как выяснилось, демон может работать в трех режимах:

1. Клиент\Серверный
2. Симметрично активный\пассивный
3. Широковещательный Читать

Как сделать “backport” пакета

1. Введение.

Поскольку я обновляю дистрибутив на домашнем компе редко, в основном по LTS релизам, то зачастую, версии софта в репозитории моего дистра достаточно устаревшие.

Понятное дело, что ставить пакет например из Ubuntu 14.04 в 12.04 бесполезная трата времени, во первых, т.к. будет куча неудовлетворенных зависимостей, во вторых, даже если забить на формальности, то бинарники из нового дистрибутива, как правило собраны под более новые библиотеки (libc, glib и т.д.), и скорее всего не будут работать.

Вариант переустановить систему на более новую я не рассматриваю. Поэтому основных решений обычно два:

1. Поискать готовый пакет под свою систему в ppa (https://launchpad.net/ubuntu/+ppas)

2. Портировать пакет из свежего дистра в свой.

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

Благо бэкпортить не сложно. Один из способов это селать, я покажу на примере программы snort. Что для этого нужно:

1. Установить ubuntu-dev-tools
2. Сгенерировать  пару gpg ключей.
3. Установить все необходимые для компиляции snort пакеты.
4. С помощью backportpackage получить необходимые для компиляции файлы.
5. Скомпилировать прогрумму. Читать