пятница, 27 июля 2012 г.

Workflow: SSL сертификаты

Одна из рутинных операций, с которыми приходится сталкиваться системному администратору - управление SSL сертификатами. Я постараюсь собрать на одной странице справочное руководство, которое поможет управлять жизненным циклом сертификата. Для наглядности процесса я буду описывать процедуру в контексте WEB сервера (в остальных случаях многое совпадает, хотя есть и различия).

Для себя я выделяю несколько этапов в жизненном цикле SSL сертификата:
  • создание SSL сертификата
  • установка SSL сертификата
  • мониторинг валидности и срока окончания SSL сертификата

пятница, 13 июля 2012 г.

Создание бинарного пакета с debug-символами в debian

Переодически приходится сталкиваться с ошибками в программах, которые приводят к их аварийному завершению. Типичный пример такой ошибки - завершение по сигналу SEGFAULT. Чтобы выяснить в каком месте и при каких условиях программа завершилась нужны отладчик и отладочные символы для исследуемой программы.

В моем случае это был tinymount, который я когда-то пакетировал ради интереса и сейчас наткнулся на ошибку в его новой версии. В моем варианте пакета отладочные символы были исключены и я добавил пару изменений в debian/control, debian/rules (сделал на примере отсюда) чтобы их получить.

$ echo >> debian/control << EOF

Package: tinymount-dbg
Architecture: any
Section: debug
Priority: extra
Depends: tinymount (= ${binary:Version}), ${misc:Depends}
Description: debugging symbols for tinymount
 Tinymount is a simple UI tool to mount/unmount disks using UDisks.
 .
 This package contains the debugging symbols for tinymount.
EOF

$ echo >> debian/rules << EOF
DEB_DESTDIR := $(CURDIR)/debian/tinymount
EOF

После чего увеличил версию пакета:

dch -v '0.2.5~pre-2' 'Added debug symbols'

и собрал его

$ debuild -us -uc

В отчете lintian (его запускает debuild после окончании сборки) помимо отсутствующей страницы man для tinymount была ругань на "пустой пакет" tinymount-dbg. Он оказался почти пустым, т.к. отладочных символов в нем действительно не было.

Дальше было больше часа попыток нагулить причину. Но озарение пришло только после вдумчивого чтения логов сборки пакета (логи рулят!). При выполнении цели install в сгенеренном qmake'ом Makefile'е выполнялся strip для инсталируемого бинарника. Вот потому dh_strip и не находил никаких отладочных символов.

Немного порывшись в документации на qmake, я добавил в debian/rules к параметру DEB_QMAKE_ARGS значение CONFIG+=debug. После этого пересборка пакета и символы появились как и ожидалось.

четверг, 5 июля 2012 г.

Maintenance page для сайтов, которые обслуживаются Apache

Я уже писал про maintenance page для сайтов, которые обслуживаются Nginx, а сегодня добавлю пример такой страницы для Apache.

Содержимое страницы maintenance.html остается прежним:

<html>
<head>
<title>Server Maintenance</title>
</head>
<body>
<center>
<h1>Server maintenance</h1>
Our apologies for the temporary inconvenience. The page is temporarily unavailable as server is down for scheduled maintenance. We will be back soon.
</center>
</body>
</html>
/var/www/maintenance/maintenance.html

Чтобы Apache выдавал страницу с кодом 503, нужно немного доработать .htaccess:

ErrorDocument 503 /maintenance.html 

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^/maintenance.html$
    RewriteCond %{REMOTE_ADDR} !1.2.3.4
    RewriteRule .* /maintenance.html [R=503,L]
</IfModule>
/var/www/maintenance/.htaccess

После этого maintenance страницу будет показывать всем кроме тех, кто заходит на сайт с ip 1.2.3.4.