Skip to content


Создание SSL-сертификата

самоподписанный SSL-сертификат

SSL - secure sockets layer

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

После непродолжительного курения man-ов родилось следующее решение:

openssl req -new -x509 -days 3650 -sha256 -newkey rsa:2048 \ 
-nodes -keyform PEM -keyout my.domain.key -outform PEM \
-out my.domain.crt -subj '/O=Some Org/CN=mail.my.domain'

O – название организации, CN – название сервера. Должно совпадать с именем хоста. Такой сертификат будет действителен 10 лет с момента создания (параметр -days). Файл my.domain.crt нужно положить в директорию /etc/pki/dovecot/certs, а файл my.domain.key – в директорию /etc/pki/dovecot/private, предварительно переименовав их в dovecot.pem или изменив параметры ssl_cert_file и ssl_key_file в конфигурационном файле /etc/dovecot.conf, чтобы привести их в соответствие реальным именам файлов с ключём с сертификатом.

Для того, чтобы экспортировать данный сертификат в формат PKCS#12, который используется многими приложениями от Microsoft, используется следующая команда:

openssl pkcs12 -export -out dovecot.pfx -in dovecot.pem \
-name "mycert" -inkey ../private/dovecot.pem

В данном случае она запускалась из директории /etc/pki/dovecot/certs.

Затем полученный сертификат в файле dovecot.pfx можно импортировать в храниилище доверенных сертификатов того приложения, которое работает с нашим почтовым сервером. Например, в Outlook Express 6 это делается так:

меню "Сервис" → "Параметры..." → вкладка "Безопасность" → кнопка "Сертификаты..." → вкладка "Доверенные корневые центры сертификации" → кнопка "Импорт...", выбрать найл dovecot.pfx, в окне запроса пароля поля оставить пустыми, далее везде согласиться со значениями по-умолчанию.

импорт ssl-сертификата в outlook

Импорт сертификата аутлук

Данная процедура избавляет от появления предупреждающего сообщения с текстом "Используемый сервер имеет сертификат безопасности, который невозможно проверить" при каждом новом сеансе связи с почтовым сервером:Предупреждение безопасности Интернета

Обратная операция (преобразование pfx в pem):

openssl pkcs12 -in dovecot.pfx -out dovecot.pem -nodes

или

openssl pkcs12 -in dovecot.pfx -out dovecot.pem

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

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

openssl s_client -connect mail.someorg.net:995

и потом использовать команды протокола POP3 для дальнейшего диалога с сервером.

Если надо получить настоящий сертификат от признанного центра сертификации (Certificate Authority или сокращённо CA), то запрос на подписание сертификата (CSR) создаётся так (нужно будет ввести в диалоговом режиме некоторую информацию об организации, инициирующей такой запрос):

openssl req -new -newkey rsa:2048 -sha256 -nodes -keyout my.domain.key -out my.domain.req
 
Generating a 2048 bit RSA private key
......................+++
....+++
writing new private key to 'my.domain.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:<b>UA</b>
State or Province Name (full name) []:<b>Kyivska obl.</b>
Locality Name (eg, city) [Default City]:<b>Irpin</b>
Organization Name (eg, company) [Default Company Ltd]:<b>Roga and Kopita</b>
Organizational Unit Name (eg, section) []:<b>It Dpt</b>
Common Name (eg, your name or your server's hostname) []:<b>my.domain</b>
Email Address []:<b>[email protected]</b>
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Здесь введенные оператором данные выделены жирным (чтобы было понятнее).

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

openssl req -new -newkey rsa:2048 -sha256 -nodes -keyout my.domain.key -out my.domain.req -subj '/C=US/ST=Florida/L=Miami/O=Cool IT Company/OU=Hosting Team/CN=my.domain/[email protected]/subjectAltName=DNS.1=www.my.domain,DNS.2=anothersubdom.my.domain'

Аббревиатуры означают следующее:
C – Country (страна)
ST – State (штат, кантон область страны и.т.п)
L – Locality (обычно город)
O – Organization (название компании)
OU – Organization Unit (отдел компании)
CN – Common Name (основной домен, который должен покрываться сертификатом)
emailAddress – адрес электронной почты
subjectAltName – альтернативные домены (обычно там сабдомен www, если выпускается multi-domain aka UC-сертификат, то доменов в атрибуте "subjectAltName" может быть больше одного).

В результате в файле my.domain.key появится приватный ключ, а в файле my.domain.req – собственно сам certificate signing request (CSR), который нужно потом будет отправить в CA.


А вот так можно проверить соответствие пары сертификат-ключ:

$ openssl x509 -noout -modulus -in my.domain.crt
Modulus=AF89EDE626F8F022D1E9A8E8C1852AC0DCA471B430737358C31DA85BF5F56BBA0F2E42A77501636E8D508EA0832822DEEEB517121B4E188E60E0E46E36971534696CE75453A23361E8B3EFB2E9B8056E6F2043605B5698D6B4AE172BD48437456C3E076ADCF613D6BB83CA4755D6641C473FBBFD346552AD804436D25673DF7FEE4CF19ABC003A7799A4BAE428A11C4611A5018BBD708AC655D043C36BCEE62F0B1FCFD9A7C2D05A284DA1E9185D8D43641D5AEF855472085DDC30105CE829922E39E2327CE8BC0C216403753303EB7DE4DF97ED1B8BCA0B80FDCD597706299BD0B34E6CCB5C878EC4BB6484F1B4D0D6E16B9FFB6ED2C3327CF7DEE2AA1C5F1F
$ openssl rsa -noout -modulus -in my.domain.key 
Modulus=AF89EDE626F8F022D1E9A8E8C1852AC0DCA471B430737358C31DA85BF5F56BBA0F2E42A77501636E8D508EA0832822DEEEB517121B4E188E60E0E46E36971534696CE75453A23361E8B3EFB2E9B8056E6F2043605B5698D6B4AE172BD48437456C3E076ADCF613D6BB83CA4755D6641C473FBBFD346552AD804436D25673DF7FEE4CF19ABC003A7799A4BAE428A11C4611A5018BBD708AC655D043C36BCEE62F0B1FCFD9A7C2D05A284DA1E9185D8D43641D5AEF855472085DDC30105CE829922E39E2327CE8BC0C216403753303EB7DE4DF97ED1B8BCA0B80FDCD597706299BD0B34E6CCB5C878EC4BB6484F1B4D0D6E16B9FFB6ED2C3327CF7DEE2AA1C5F1F

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

UPDATE от 2014-06-26: По мотивам вышеизложенного и камментов ниже свяал себе такой скриптец, чтобы быстро смотреть инфу по сертификатам:

#!/bin/bash
cert="$1"
if [ -z "$cert" ]; then
  echo "Checking for validity intervals for certificates in current dir:"
  for c in *.crt ; do
    echo "File |$c|:"
    openssl x509 -text -noout -in $c | grep -A 1 -E "Alternative|Before|After"
    echo "============================================================="
  done
  echo "Checking for mutual correspondence of keys and certificates in current dir (values whould match):"
  for c in `ls *.crt | grep -vE "intermediate|bundle"` ; do
    echo "File |$c|"
    openssl x509 -noout -modulus -in $c | openssl md5
  done
  for k in *.key ; do
    echo "File |$k|"
    openssl rsa -noout -modulus -in $k | openssl md5
  done
else
  echo "File |$cert|:"
  openssl x509 -text -noout -in $cert | grep -A 1 -E "Alternative|Before|After"
fi

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

  • ноябрь 2014 – Google Chrome начинает показывать предупреждение для сайтов с SHA-1 SSL сертификатами, срок действия которых заканчивается в 2017 году;
  • декабрь 2014 – Google Chrome начинает показывать предупреждение для сайтов с SHA-1 SSL сертификатами, срок действия которых заканчивается после 01.06.2016;
  • январь 2015 – Google Chrome начинает показывать предупреждение для сайтов с SHA-1 SSL сертификатами, срок действия которых заканчивается в 2016-м году;
  • 1-ое января 2016 – Microsoft прекращает доверять SHA-1 сертификатам для подписи кода (Code Signing), которые не имеют временных меток (timestamp);
  • 1-ое января 2017 – Microsoft и Mozilla перестанут доверять любым SHA-1 SSL сертификатам.

Упомянутое предупреждение от Google Chrome версии 41.0.2272.89 по состоянию на 2015-03-16 выглядит так: "The site is using outdated security settings that may prevent future versions of Chrome from being able to safely access it." и его можно увидеть если кликнуть по пиктограмме в строке адреса у левого её края.

Кстати, если кому нужен недорогой SSL-сертификат (всего за 14$/год), обращайтесь.

Больше информации о практическом использовании OpenSSL можно найти тут: xgu.ru

Отличный сервис для анализа конфигурации TLS, поиска и устранения проблем: https://www.ssllabs.com/ssltest/analyze.html.

Posted in *nix, Howto, Windows.

Tagged with , , .


Торт "Наполеон"

Мой торт наполеон с калинойПривожу рецепт очень широко известного и очень вкусного торта "Наполеон". По этому рецепту делал сам, получилось отлично. Для украшения использовался тёртый шоколад и калина. Процесс приготовления суммарно занял часа 4, но это было первый раз, после некоторой тренировки, думаю, должно получаться быстрее. Чтобы коржи были одинаковой формы, сразу после духовки их нужно обрезать по какому-то шаблону, например, прикладывая сверху большую тарелку или разделочную доску подходящей формы.

Ингредиенты для крема:

  • 2,5 литра молока;
  • 250-300г сахара;
  • 5 яичных белков;
  • 4 ст. ложки муки;
  • 400г сливочного масла.
Ингредиенты для теста:

  • 0,5 кг муки;
  • 1 пачка маргарина сливочного;
  • 1 стакан пива;
  • 1 яйцо;

Приготовление крема

  1. 2 литра молока довести до кипения, добавить в молоко 250-300 гр. сахара и тщательно перемешать.
  2. Отдельно взбить со стаканом сахара 5 яичных белков, во взбитую массу ввести 200 гр. молока и четыре столовых ложки муки.
  3. Энергично вымешать эту массу венчиком, до равномерной структуры (без комочков).
  4. При непрерывном помешивании тихо кипящего молока, ввести в него массу из п.3 и заварить крем (кипятить 2-4 мин).
  5. Сняв с огня, крем остудить.
  6. Размягчить 400 гр. сливочного масла и взбить его с остывшим кремом.

Приготовление коржей

  1. Порубить маргарин с мукой тщательно, добавить пиво, яйцо, вымешать.
  2. Разделить тесто на 10-12 равных частей, поставить на 2-3 в холодильник.
  3. Раскатать коржи на ровной поверхности, посыпанной мукой, чем тоньше, тем лучше.
  4. Выпекать коржи в духовке примерно по 3-5 минут до слегка коричневого цвета. Чтобы коржи получались плоскими, без вздутостей, нужно непрерывно следить на ними через окно духовки и при появлении пузырей прокалывать их вилкой. Коржи удобно переносить на противень, наматывая их на скалку.

Еще теплые коржи обильно промазать кремом, уложить друг на друга, хорошо прижав их. Подравнять края и образовавшейся крошкой посыпать поверхность и бока торта, смазав их предварительно кремом. Поверхность можно украсить тертым шоколадом, цукатами, калиной, орехами. Убрать торт на ночь в холодильник. Рекомендуется подавать не ранее, чем через 12 часов (чтобы успел пропитаться кремом). Но я лично столько ждать не смог :)

Posted in Recipes.


Солянка мясная

солянка мясная
Ингредиенты (примерно на 5-6 порций):

  • две луковицы;
  • 350 г любого мяса (вареного, копченого и т.д.), подойдет также ветчина, колбаса, сосиски и т.п.;
  • 500 г говядины;
  • одна морковка;
  • три соленых огурца;
  • шампиньоны (4-5 шт.);
  • черные маслины;
  • пол-лимона;
  • огуречный рассол (около стакана);
  • петрушка, укроп.

Приготовление.

  1. Сварить бульон из говядины. Для вкуса можно добавить разрезанную луковицу, корень сельдерея или имбирь. За 5 минут до конца варки достать из бульона все кроме мяса, добавить душистый перец и лавровый лист.
  2. Нарезать лук, прожарить на подсолнечном масле до золотистого цвета, потом добавить тертую морковь и пассировать несколько минут.
  3. Нарезать ломтиками соленые огурцы и добавить к луку и морковке, тушить несколько минут, потом добавить в бульон.
  4. Порезать говядину из бульона, колбасу, ветчину и сосиски и добавить в кастрюлю.
  5. Нарезать шампиньоны, обжарить на сковородке с растительным маслом. Когда вся жидкость выкипит, переложить в кастрюлю.
  6. Влить в кастрюлю огуречный рассол, сок от маслин и варить еще 5-10 минут.
  7. Нарезать зелень и добавить в кастрюлю, дать настояться минут 15-20.
  8. В тарелки с солянкой положить несколько долек лимона и маслины.

Меню ресторанчика с надписью суп дня

Posted in Recipes.


Маркетинг для чайников

1. На вечеринке ты видишь симпатичного парня. Ты подходишь к нему и говоришь: 'Со мной классно в постели'. Это прямой маркетинг.

2. Ты пришла на вечеринку с друзьями и видишь симпатичного парня. Один из твоих друзей подходит к нему и говорит: 'С ней классно в постели'. Это реклама.

3. На вечеринке ты видишь симпатичного парня. Ты подходишь к нему и просишь номер телефона. На следующий день ты звонишь ему и говоришь: 'Со мной классно в постели'. Это телефонный маркетинг.

4. На вечеринке ты видишь симпатичного парня. Ты поднимаешься и поправляешь платье, подходишь к нему и наливаешь ему напиток. Ты говоришь: 'Позвольте' и подходишь к нему ближе, чтобы поправить ему галстук, и одновременно касаешься грудью его руки, а затем говоришь: 'Кстати, со мной классно в постели'. Это пиар.

5. На вечеринке ты видишь симпатичного парня. Путем хитрых махинаций ты устраиваешь грязную склоку между присутствующими девушками, а сама остаешься в стороне. Когда все передерутся, ты говоришь 'пойдем отсюда! кстати, со мной классно в постели!' - это черный пиар.

6. На вечеринке ты видишь симпатичного парня. Он подходит к тебе и говорит: 'Я слышал, с тобой классно в постели'. Это узнаваемый брэнд.

7. На вечеринке ты видишь симпатичного парня. Ты уговариваешь его пойти с твоей подругой. Это торговое представительство.

8. Твоя подруга не удовлетворяет его, поэтому он звонит тебе. Это техническая поддержка.

9. Ты на пути на вечеринку и вдруг тебе в голову приходит мысль, что в тех домах, мимо которых лежит твой путь, может быть много симпатичных мужчин. Ты залезаешь на крышу одного из домов, расположенных ближе к центру и кричишь во все горло: 'Со мной классно в постели!' - это спам.

10. На вечеринке ты видишь несколько симпатичных парней. Ты всем им пишешь записки о том, как с тобой будет классно в постели. Это директ-мейл.

11.Ты приходишь на вечеринку, видишь обалденного парня, подходишь к нему и говоришь 'пойдем наверх, я очень хороша в постели'. А он говорит 'я не могу, потому что люблю мальчиков' - это неверный выбор целевой группы.

12. Ты приходишь на вечеринку и говоришь 'Со мной круто в постели, но за мое тело хочу шоколад и шампанское'. Это бартер.

13. Ты приходишь на вечеринку, а там куча красивых девиц. Ты приспускаешь бретельку и говоришь: 'Со мной круто в постели и шоколада с шампанским не надо' - это демпинг.

14. На вечеринке ты не пользуешься успехом. Ты бежишь в центр пластической хирургии и делаешь себя похожей на Мерелин Монро. Это плагиат.

15. На вечеринке ты сразу громко заявляешь - 'Кто интересуется какова я в постели - за мной!' и уводишь их на другую вечеринку. Это позиционирование...

16. На вечеринку ты вообще не пошла, но говорят там только о том, как ты хороша в постели. Это раскрученная торговая марка.

17. Вечеринка проходит у тебя дома и приглашены только парни с которыми ты переспала. Это конференция разработчиков.

18. Ты пришла на вечеринку с подругами, и вы вместе видите симпатичного парня. Каждая из вас рассказывает как круто с ней в постели и что она за это хочет получить. Это тендер.

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

20. Ты пришла на вечеринку с друзьями и видишь симпатичного парня. Подходишь к нему и говоришь, что тебя зовут Светка. Все знают как хорошо в постели со Светкой. При этом Светка знает, что ты выдала себя за нее. За это Светка получает шоколадку. Это франчайзинг.

21. Ты приходишь на вечеринку с подругой. На вечеринке все знают, что с тобой хорошо в постели, ты им рекомендуешь подругу и говоришь, что ты ее всему научила и она знает все то, что знаешь ты. Утром Вы делите шампанское и шоколадки между собой. Это передача технологии и научно-техническая кооперация.

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

23. Ты пришла на вечеринку с друзьями и видишь симпатичного парня. Подходишь к нему и говоришь, что с тобой классно в постели. Уходишь с ним. Приходите домой, а дома муж. Симпатяга уходит несолоно хлебавши, ты получаешь в глаз. Это форс-мажор.

24. Ты приходишь на вечеринку и говоришь что с тобой круто в постели. К тебе подваливает пара мощных девчат и говорят: 'Мы согласны на 30% шоколада и 40% шампанского в месяц. Иначе у тебя могут возникнут проблемы'. Это 'крыша'.

25. Ты приходишь на вечеринку, но тебя никто не хочет, одни кричат 'дорого!', другие слышали от знакомых, что ты не так уж хороша в постели, третьи еще не долечились после предыдущего раза... Тогда ты сваливаешь и катишь на другую вечеринку в Крыжополь... Там тебя хотят все, заваливают подарками и норовят познакомиться поближе... Это работа с регионами.

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

27. Ты приходишь на вечеринку вместе со Светой (у тебя классная попка, у нее грудь)... Всем парням выставляется условие: мы вместе... Это стратегическое партнерство.

28. Все давно знают, насколько ты хороша в постели... И тут ты пускаешь слух, что умеешь офигенно готовить... Это захват новых рынков.

29. Ты уродина и тебя видеть никто не хочет... Но Папа проплачивает вечеринку... - толпа народу и все тебя хотят... Это государственные субсидии.

30. Ты приходишь на вечеринку с подругой-уродиной и все симпатичные парни сразу тебя замечают, так как ты выгодно выделяешься на ее фоне. Это - contrast, а подруга удачно подобранный background-image.

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

Это рынок, детка...

Posted in Fun.