- Проверка сертификата ssl/tls в почтовом сервере
- Что такое cfa?
- Cert-manager
- Dovecot и сертификаты let’s encrypt
- Let’s encrypt в postfix
- Nginx
- №1. самоподписанный сертификат
- №3. wildcard le с валидацией через dns
- №4. использование специальных аннотаций ingress
- Зачем нужен cfa
- Как подготовиться к cfa level i
- Как получить сертификат cfa?
- Настройка автопродления сертификатов
- Опыт сдачи the iia’s acca cia challenge exam – квалификация cia (certified internal auditor) – институт внутренних аудиторов
- Получаем wildcard от let’s encrypt
- Получаем сертификат от let’s encrypt
- Помогла статья? подписывайся на telegram канал автора
- Пример простой автоматизации letsencrypt
- Продление сертификатов
- Разобраться в теории
- Регистрация в let’s encrypt
- Решить пробные вопросы
- Сдать пробные экзамены
- Вместо заключения
- Заключение
Проверка сертификата ssl/tls в почтовом сервере
Способов проверить сертификат в почтовом сервере множество. Например, у меня есть статья, где я настраиваю мониторинг сертификатов с помощью Zabbix. Там же есть примеры и для почтового сервера. Вот так с помощью openssl в консоли сервера можно посмотреть текущие сертификаты.
Что такое cfa?
CFA расшифровывается как Chartered Financial Analyst — «Дипломированный финансовый аналитик». Это сертификат, который подтверждает профессиональные знания для специалистов в области финансов, инвестиций и страхования. Его выдает Институт CFA — международная ассоциация экспертов по управлению инвестициями.
Важно понимать, что CFA — это не образовательный курс, а диплом, который выдается после прохождения экзамена. Чтобы получить степень CFA, вам не обязательно обучаться в конкретном вузе или заканчивать определенный курс. Институт CFA сформулировал перечень необходимых знаний и требований для соискателей, а также собрал список рекомендованной литературы. Эти знания вы можете тренировать либо самостоятельно, либо на дополнительных курсах.
Cert-manager
— специальный проект для Kubernetes, представляющий собой набор CustomResourceDefinitions (отсюда
на минимально поддерживаемую версию K8s — v1.12) для конфигурации CA (удостоверяющих центров) и непосредственного заказа сертификатов. Установка CRD в кластер тривиальна и
к применению одного YAML-файла:
Dovecot и сертификаты let’s encrypt
Дальше проделаем то же самое, только для Dovecot. Настроим его на работу с сертификатом let’s encrypt. Для этого добавляем в его конфиг /etc/dovecot/dovecot.conf параметры.
Let’s encrypt в postfix
Теперь настроим postfix на работу с бесплатным сертификатом от let’s encrypt. Для этого достаточно в конфигурационный файл /etc/postfix/main.cf добавить несколько параметров:
Nginx
Nginx предполагает несколько иной подход к настройке. Для каждого виртуального хоста в секцию server следует добавить блок:
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root /var/www/letsencrypt;
}
location = /.well-known/acme-challenge/ {
return 404;
}Я также рекомендуем вынести указанный блок в отдельный шаблон, например, /etc/nginx/letsencrypt.conf и впоследствии подключать в конфигурацию виртуального хоста именно его и в общих чертах это должно выглядеть так:
№1. самоподписанный сертификат
Ресурс Issuer будет выглядеть так:
apiVersion: cert-manager.io/v1alpha2
kind: Issuer
metadata:
name: selfsigned
spec:
selfSigned: {}А чтобы выпустить сертификат, необходимо описать ресурс
Certificate
, где указывается, как произвести выпуск (см. раздел
issuerRef
ниже) и где размещен приватный ключ (поле
secretName
). После этого в Ingress потребуется сослаться на этот ключ (см. раздел
tlsspec
№3. wildcard le с валидацией через dns
Усложним задачу, выписав сертификат сразу на все поддомены сайта и воспользовавшись на этот раз DNS-проверкой (через CloudFlare).
Для начала получим в панели управления CloudFlare токен для работы через API:
- Profile → API Tokens → Create Token.
- Выставляем права доступа следующим образом:
- Копируем полученный после сохранения токен (например:
y_JNkgQwkroIsflbbYqYmBooyspN6BskXZpsiH4M).
Создадим Secret, в котором будет храниться этот токен, и сошлемся на него в Issuer:
№4. использование специальных аннотаций ingress
Помимо прямого пути по созданию сертификатов в cert-manager есть возможность воспользоваться компонентом под названием
и явно не создавать ресурсы
Certificate
. Идея заключается в том, что с помощью специальных аннотаций Ingress’а сертификат будет автоматически заказан с помощью указанного в них
Issuer
. В результате получается примерно следующий ресурс Ingress’а:
Зачем нужен cfa
Я не собираюсь работать в банковской сфере, но все равно решил, что мне нужно получить CFA. Для этого есть несколько причин:
- Сама подготовка к экзамену CFA — это отличная возможность прокачать себя в финансовой сфере.
- Степень CFA — это престижно. Конечно, она не гарантирует, что ты крутой портфельный менеджер и тебе стоит отдать в управление все деньги клиента. Но CFA подтверждает, что ты хорошо знаешь финансы.
- CFA может пригодиться в будущем. Весь процесс занимает много времени — как минимум три года. Быстро все это провернуть не получится. Так что если когда-нибудь чартер все-таки понадобится, сдача хотя бы нескольких уровней будет полезна. А понадобиться он может при трудоустройстве в особо строгие финансовые компании и топовые фонды или для того, чтобы впечатлить клиентов (возможно, это самое важное!).
Как подготовиться к cfa level i
Весь процесс подготовки я разделил на три основных блока: теория, решение вопросов и симуляция экзамена. Порой придется работать с несколькими блоками параллельно, и это важно.
Как получить сертификат cfa?
Диплом CFA подтверждает знания, но не заменяет обучение в области финансов. Напротив, для получения сертификата требуется высшее образование и профильный опыт работы.
Для получения CFA необходимо сдать три уровня письменных экзаменов. Они проводятся только на английском языке. Экзамен по каждому уровню проводится один раз в год, в определенный день во всем мире. Соответственно, учебная программа CFA занимает не меньше трех лет.
В этом году я сдал экзамен CFA Level I. Сдал я его с первого раза и достаточно хорошо: почти по всем темам набрал больше 70 % правильных ответов. После этого я начал анализировать свой процесс подготовки, чтобы приступить ко второму уровню, и выяснил интересный факт.
Подготовка заняла у меня всего 60 часов. Насколько я помню, CFA Institute советует тратить на каждый уровень от 100 до 200 часов, и у многих людей действительно уходит примерно столько времени. Как мне удалось подготовиться гораздо быстрее? Секрет в том, что я много времени уделял планированию и аналитике. Да-да, вместо того, чтобы читать книжки и решать задачки, сидел перед компом и строил планы. Все как я люблю.
Благодаря планированию мне удалось сократить время на подготовку к экзамену, а оставшееся потратить на просмотр сериалов. Не знаю, как вы, а я от эффективного тайм-менеджмента получаю огромное удовольствие. Почти такое же, как от просмотра самих сериалов (всем ведь хотелось узнать, чем кончится 7-й сезон «Игры престолов»).
Настройка автопродления сертификатов
Тут всё просто, точнее даже очень просто.
Создаем исполняемый bash скрипт и открываем на редактирование:
sudo touch /etc/cron.weekly/cert-nginx && sudo chmod x /etc/cron.weekly/cert-nginx && sudo nano /etc/cron.weekly/cert-nginxСледующего содержания:
Опыт сдачи the iia’s acca cia challenge exam – квалификация cia (certified internal auditor) – институт внутренних аудиторов
Автор: Максим Курлов, CIA, ACCA, менеджер группы внутреннего аудита в Domino’s Pizza Russia (DP Eurasia N.V.)
Летом 2021 года Международный Институт внутренних аудиторов (IIA) объявил о том, что действующие члены ACCA имеют возможность получить сертификат CIA, сдав всего один экзамен на английском языке. Причем ранее IIA заявлял, что данный экзамен будет проводиться только один раз в 4 года (последние два раза экзамены проводились в 2021 и 2021 гг.), и член ACCA только один раз имеет возможность сдать такой экзамен.
В то время я работал руководителем направления корпоративного аудита в одной из золотодобывающих публичных компаний. Блок аудита включал более 20 аудиторов, и ни один не имел сертификата CIA. Хотя только CIA подтверждает профессионализм в области внутреннего аудита на международном уровне и часто является важным фактором при внешней оценке деятельности внутреннего аудита. Я предложил директору департамента корпоративного и финансового аудита в рамках имеющегося бюджета подготовиться и сдать этот экзамен. К тому времени три сотрудника, включая меня, имели сертификацию ACCA. Времени на обдумывание оставалось мало. К тому времени у меня уже был опыт сдачи многих экзаменов, и была сдана первая часть CIA1. Также на руках были материалы Gleim, IIA и Hock Training по первой и второй частям экзамена CIA. Мы дружно оформили Character Reference Form (Характеристика кандидата), где рекомендатель (действующий CIA) поручился, что кандидат демонстрирует высокие моральные и профессиональные качества и соответствует требованиям, предъявляемым Кодексом этики IIA и выслали весь необходимый пакет документов в IIA. Далее, компания оплатила регистрационный взнос, членство, материалы для подготовки и экзамены (процесс был довольно несложный).
Все требования по регистрации и темы экзамена CIA были здесь: https://globaltraining.org/wp-content/uploads/2021/03/ACCA-Challenge-Exam-Candidate-Guide-FINAL-5-21.pdf
Вскоре, в течение 10 дней мы получили специальный материал для подготовки в виде электронной книги, который назывался The IIA’s ACCA CIA Challenge Exam Study Guide.
Затраты, необходимые для сдачи экзамена в 2021 г.
Пакет экзамена Challenge стоил 1295 долларов США для кандидатов, не являющихся членами IIA и 1095 долларов США для действующих членов IIA. В комплект входили следующие компоненты:
• Плата за подачу заявления на экзамен CIA (для членов в размере 115 долларов США / не членов – 230 долларов)
• Регистрационный взнос на экзамен CIA (для членов в размере 740 долларов США / не членов – 1085 долларов США)
• Учебное пособие IIA: ACCA CIA Challenge Exam в формате загружаемой электронной книги (как правило, 500 долларов США для члена / 600 долларов США не для члена)
• Членство в IIA (если кандидат в настоящее время не имеет членства в IIA).
Экзамен Challenge предлагался только в комплекте. Кандидаты могли сдать экзамен по стандартной процедуре, состоящей из трех частей, если они желали оплатить только заявку на экзамен и регистрационные сборы.
Учебный материал представлял собой небольшую по объему теоретическую текстовую (описательную) и практическую часть в виде тестов (MCQs). В то же время, было очевидным, что данного материала для подготовки может быть недостаточно. Ранее у меня был опыт подготовки и сдачи первой части CIA и одним из самых популярных и надежных провайдеров для подготовки являлся и является, на мой взгляд, Gleim. Мной ранее были приобретены как теоретические материалы в формате PDF, так и практические материалы (программное обеспечение в виде вопросов и ответов). Тест-банк по каждой части составлял около 800-1000 вопросов и ответов с детальным разбором и объяснением). Их предстояло все проработать…чтобы надеяться на успех.
Важно было проанализировать программу и тематики экзамена (Syllabus). Стало понятно, что в него в основном входят вопросы из 1 (первой) и 2 (второй) частей экзамена CIA. На этом и был сделан дальнейший фокус. Программа ACCA CIA Challenge Exam была тщательно проанализирована и сопоставлена с учебными модулями материалов Gleim и Ноck Training (у данного провайдера тоже есть свое программное обеспечение с вопросами и ответами).
Начался процесс проработки вопросов и чтение литературы (Gleim, Hock, Wiley), а также бесплатных материалов, которые есть на сайтах IIA и ИВА, делая упор на Стандарты (IPPF) и интерпретации к ним. Много внимания уделялось решению этических дилемм и вопросов о системе внутреннего контроля в разных бизнес-циклах. Важным является то, что вопросы не нужно запоминать, так как на экзамене они будут другими, хотя в чем-то похожими. Соответственно, при решении необходимо понять суть вопроса и логику предлагаемого решения. Не всегда ответ будет казаться очевидным. Одни из самых сложных вопросов – те, где нужно выбрать один или несколько правильных ответов.
Вы зарегистрировались на экзамен, купили всю литературу, определились с прометрик- центром, где будете сдавать экзамен. Желательно это делать за месяц-полтора до экзамена, и каждый день понемногу уделять время подготовке. Приближение даты экзамена будет добавлять мотивацию. При решении модулей программного обеспечения Gleim или Ноck, рекомендую набирать не менее 90% правильных ответов. Раскладывать время на «дистанции» необходимо из учета 125 вопросов за 2.5 часа, то есть чуть больше одной минуты на вопрос. Если вопрос кажется сложным, то пропустите его: вы сможете еще к нему вернуться. Сложных математических вычислений быть не должно, но вопросы необходимо тщательно читать и корректно интерпретировать. По окончании у вас должно остаться не больше 5-10 минут, что будет означать, что вы правильно распределили время.
Итак, день экзамена настал. За день до него лучше ничего уже не смотреть, не повторять и дать голове отдохнуть. Хорошо выспаться, зарядиться позитивом и настроиться на лучшее.
Отправляясь в прометрик-центр, не забудьте взять все необходимые документы и распечатки. Далее вас ждет этап регистрации, где возьмут ваши отпечатки пальцев и попросят освободить ваши карманы от ненужных вещей (сейчас данный экзамен можно сдавать удаленно[1], не выходя из дома, но, конечно, при соблюдении всех требований безопасности). Вас проведут в специальное выделенное помещение, которое наблюдается со всех сторон видеокамерами и наблюдателем, посадят за компьютер, и как только вы будете готовы, останется нажать на кнопку «Старт», дальше вы увидите вопросы и варианты ответов. 2,5 часа пролетят незаметно, как мгновение, запястья и пальцы не будут так сильно напоминать об экзамене (в сравнении с ACCA), в отличие от опустошенности в голове. После того, как время остановится, вам будет разрешено покинуть экзаменационное место, вы выйдите, и наблюдатель завершит процесс. После, удаленный сервер в течение минуты начнет обрабатывать результаты вашего тестирования. Это будет долгая, но счастливая минута ожидания, когда вы услышите «Поздравляем Вас! Вы сдали!» и вручат простой бланк с напечатанной заветным словом ‘’PASS’’. Это будет еще неофициальный результат, но надежный. Официальный вы получите спустя 48 часов в вашем личном кабинете CCMS на сайте IIA. Поздравляем, вы CIA!
[1] Читайте статью Анны Эглис «Онлайн-тестирование CIA из дома: личный опыт» на сайте Института внутренних аудиторов https://www.my-sertif.ru/inner_auditor/publications/articles/member_articles/onlayn-testirovanie-cia-iz…
Получаем wildcard от let’s encrypt
Давайте наконец-то получим наш сертификат для поддоменов. но для начала в тестовом режиме. В терминале набираем:
Получаем сертификат от let’s encrypt
Итак, я считаю, что вы настроили почтовый сервер по предложенной выше ссылке. Значит, у вас установлен веб сервер Apache, а так же все в порядке с dns записями. Сертификатов мы получим сразу два. Для доменных имен:
Для настройки получения сертификатов let’s encrypt и настройки apache, нам нужно будет установить несколько пакетов. Напоминаю, что речь идет про Centos 8. В других системах настройка будет аналогичной, только имена пакетов могут отличаться.
Помогла статья? подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.
Пример простой автоматизации letsencrypt

Удостоверяющий центр «Let’s Encrypt» (далее просто letsencrypt) вышел из беты пару месяцев назад, пообтерся в реальных условиях, избавился от детских болезней и оброс различными клиентами. И к этому моменту выдал 5 миллионов сертификатов. Самое время внедрять, т.е. получать сертификаты на свои домены и обновлять их в автоматическом режиме. Но как внедрить так, чтобы приблизиться к любимому админскому «поставил и забыл»? Чтобы было просто получать новые сертификаты, а старые при этом обновлялись автоматом? Ну и как добавить немного безопасности в этот процесс?
Ответ под катом.
Как я уже сказал, letsencrypt оброс различными клиентами, которые позволяют получить сертификат. Этих самых клиентов, кстати, уже
десятки
под разные системы и языки программирования. В статье будет рассказано про реализацию клиента на bash от lukas2511,
letsencrypt.sh
. Это один скрипт на bash, который лежит в своей папке и для работы ему нужен только openssl. Запускаться он будет под отдельным пользователем. Конечно, при желании, всегда можно ещё сильнее закрутить гайки в плане безопасности — запускать в chroot и т.д.
Сначала нужно скачать и настроить скрипт.
Предположим, что ОС — linux, веб сервер — nginx, рабочая папка скрипта — /opt/letsencrypt, а пользователь — le.
Создадим системного пользователя, из под которого будет работать скрипт. При создании системного пользователя в debian/ubuntu, ему выставляется оболочка /bin/false и назначается группа nogroup, что нам вполне подходит.
$ sudo adduser --system --home /opt/letsencrypt leТеперь можно стать этим пользователем и все делать под ним (кроме настройки nginx).
Скачиваем скрипт и смотрим содержимое.
$ sudo -u le -s
$ git clone https://github.com/lukas2511/letsencrypt.sh.git /opt/letsencrypt/
$ ls -la /opt/letsencrypt/
total 84
drwxr-xr-x 4 le le 4096 Jun 25 15:56 .
drwxr-xr-x 3 root root 4096 Jun 25 15:53 ..
-rw-r--r-- 1 le le 1406 Jun 25 15:56 CHANGELOG
drwxr-xr-x 3 le le 4096 Jun 25 15:56 docs
drwxr-xr-x 8 le le 4096 Jun 25 15:56 .git
-rw-r--r-- 1 le le 108 Jun 25 15:56 .gitignore
-rwxr-xr-x 1 le le 37634 Jun 25 15:56 letsencrypt.sh
-rw-r--r-- 1 le le 1080 Jun 25 15:56 LICENSE
-rw-r--r-- 1 le le 3040 Jun 25 15:56 README.md
-rwxr-xr-x 1 le le 8048 Jun 25 15:56 test.sh
-rw-r--r-- 1 le le 107 Jun 25 15:56 .travis.yml
Для работы скрипту нужна папка, куда он будет складывать файлы для валидации доменов.
По умолчанию скрипт настроен использовать папку
/opt/letsencrypt/.acme-challenges
и будет падать с ошибкой, если такой папки нет.
Так же желательно создать конфиг с нужными параметрами. Параметры для работы скрипт пытается брать из файла
/opt/letsencrypt/config
. По умолчанию файла нет и скрипт использует значения по умолчанию, но есть хорошо документированный конфиг в папке с документацией, который можно взять за основу.
Создаем папку и копируем конфиг
$ mkdir /opt/letsencrypt/.acme-challenges
$ cp /opt/letsencrypt/docs/examples/config /opt/letsencrypt/config
Чтобы посмотреть, с какими значениями работает скрипт, его можно вызвать с ключем
--env
$ /opt/letsencrypt/letsencrypt.sh --env
# letsencrypt.sh configuration
#
# !! WARNING !! No main config file found, using default config!
#
declare -- CA="https://acme-v01.api.letsencrypt.org/directory"
declare -- LICENSE="https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2021.pdf"
declare -- CERTDIR="/opt/letsencrypt/certs"
declare -- CHALLENGETYPE="http-01"
declare -- DOMAINS_TXT="/opt/letsencrypt/domains.txt"
declare -- HOOK=""
declare -- HOOK_CHAIN="no"
declare -- RENEW_DAYS="30"
declare -- ACCOUNT_KEY="/opt/letsencrypt/accounts/aHR0cHM6Ly9hY21lLXYwMS5hcGkubGV0c2VuY3J5cHQub3JnL2RpcmVjdG9yeQo/account_key.pem"
declare -- ACCOUNT_KEY_JSON="/opt/letsencrypt/accounts/aHR0cHM6Ly9hY21lLXYwMS5hcGkubGV0c2VuY3J5cHQub3JnL2RpcmVjdG9yeQo/registration_info.json"
declare -- KEYSIZE="4096"
declare -- WELLKNOWN="/opt/letsencrypt/.acme-challenges"
declare -- PRIVATE_KEY_RENEW="yes"
declare -- OPENSSL_CNF="/usr/lib/ssl/openssl.cnf"
declare -- CONTACT_EMAIL=""
declare -- LOCKFILE="/opt/letsencrypt/lock"
CA— какой удостоверяющий центр использовать. Их, как минимум два — боевой (по умолчанию) и
тестовый
. Дело в том, что у боевого есть
разные ограничения
по частоте запросов и количеству доменов. В эти ограничения легко упереться при тестировании. Поэтому я рекомендую для тестовых запусков указать тестовый центр. Он работает так же, как боевой, просто генерирует невалидные сертификаты.
Вот тестовый CA:
CA="https://acme-staging.api.letsencrypt.org/directory"CERTDIR
— папка для сертификатов. Внутри неё отельные папки по имени хоста. А в этих папках уже сертификаты для каждого хоста. Нужно будет настроить nginx читать сертификаты из этих папок (см. ниже).
DOMAINS_TXT — список доменов. Одна строчка — один сертификат. В одной строчке может быть несколько доменов, тогда создается один сертификат для них. Скрипт берет первый домен, как название сертификата, а остальные домены указывает, как дополнительные. Например, для такого файла, скрипт создаст два сертификата: some.domain.com и test.com.some.domain.com another.domain.net example.domain.org
test.com www.test.org ftp.test.netHOOK — скрипт, который запускается при различных действиях (при валидации доменов, при генерации сертификатов и т.д.).
Скрипту передаются разные параметры: название операции, пути к новым сертификатам и т.д.
Указание своего скрипта может помочь, если вам нужно выполнять чуть больше действий на каждом шаге.
Например, сертификат нужно разложить на несколько серверов, или нужно проводить валидацию домена через dns, а не через файл.
Скрипт, который ничего не делает, но содержит массу комментариев, лежит по адресу /opt/letsencrypt/docs/examples/hook.sh
RENEW_DAYS — через сколько дней обновлять сертификат. Максимум 90, по умолчанию 30.
CONTACT_EMAIL — рабочий email администратора.
Я рекомендую указать в конфиге свой email в
CONTACT_EMAIL
и на время тестов прописать тестовый
CA
.
Установка и первоначальная настройка скрипта на этом завершены. Теперь можно получать сертификаты.
Для начала получим сертифкат для одного домена: letest.lexore.net
В nginx для теста сделаем простой конфиг виртуального хоста, который будет выводить протокол, http или https.
server {
listen 80;
server_name letest.lexore.net;
location /.well-known/acme-challenge/ { alias /opt/letsencrypt/.acme-challenges/; }
location / {
default_type text/plain;
return 200 "scheme: $scheme";
}
}
Ключевой параметр:
location /.well-known/acme-challenge/
В папке
/opt/letsencrypt/.acme-challenges/
создаются файлы для подтверждения, что вы управляете сайтом.
Они должны быть доступны по адресу
имя_сайта/.well-known/acme-challenge/
, иначе сертификат не подпишут.
Названия файлов генерируются случайным образом, поэтому проще открыть доступ ко всей папке.
В конце скрипт удаляет созданный файл, так что папка не будет захламляться.
Перезагрузим nginx и проверим сайт:
$ curl -i letest.lexore.net
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 26 Jun 2021 13:13:18 GMT
Content-Type: text/plain
Content-Length: 12
Connection: keep-alive
scheme: http
Теперь нужно прописать имя хоста в domains.txt и запустить сам скрипт
$ echo letest.lexore.net > /opt/letsencrypt/domains.txt
$ /opt/letsencrypt/letsencrypt.sh --cron
# INFO: Using main config file /opt/letsencrypt/config
Processing letest.lexore.net
Signing domains...
Creating new directory /opt/letsencrypt/certs/letest.lexore.net ...
Generating private key...
Generating signing request...
Requesting challenge for letest.lexore.net...
Responding to challenge for letest.lexore.net...
Challenge is valid!
Requesting certificate...
Checking certificate...
Done!
Creating fullchain.pem...
Done!
Сертификат готов, файлы сертификата и ключа лежат в папке “
/opt/letsencrypt/certs/letest.lexore.net
“.
Осталось добавить настройки в nginx. Нужно добавить следующие строки в конфиг виртуального хоста:
listen 443 ssl;
ssl_certificate /opt/letsencrypt/certs/letest.lexore.net/fullchain.pem;
ssl_certificate_key /opt/letsencrypt/certs/letest.lexore.net/privkey.pem;
После перезагрузки nginx, можно пробовать сайт в браузере.
Если в конфиге скрипта был указан тестовый CA, браузер заругается на сертификат.
Но это все равно значит, что скрипт и nginx настроены правильно.
Теперь нужно просто поменять CA в конфиге на боевое значание и запустить скрипт ещё раз, добавив параметр
--force
.
Без этого параметра скрипт не станет заново генерировать сертификат, т.к. ещё не подошел срок устаревания, указанный в конфиге.
le@endor:~$ /opt/letsencrypt/letsencrypt.sh --cron --force
# INFO: Using main config file /opt/letsencrypt/config
Processing letest.lexore.net
Checking domain name(s) of existing cert... unchanged.
Checking expire date of existing cert...
Valid till Sep 24 12:13:00 2021 GMT (Longer than 80 days). Ignoring because renew was forced!
Signing domains...
Generating private key...
Generating signing request...
Requesting challenge for letest.lexore.net...
Responding to challenge for letest.lexore.net...
Challenge is valid!
Requesting certificate...
Checking certificate...
Done!
Creating fullchain.pem...
Done!
После запуска скрипта и перезагрузки nginx у сайта появится правильный сертификат.
Сертификат готов, https работает.
Пару слов про несколько доменов.
Один сертификат может использоваться для нескольких доменов. Например, вот как это будет выглядеть, если добавить
subdomain.letest.lexore.net
.
Запуск скрипта:
$ /opt/letsencrypt/letsencrypt.sh --cron --force
# INFO: Using main config file /opt/letsencrypt/config
Processing letest.lexore.net with alternative names: subdomain.letest.lexore.net
Checking domain name(s) of existing cert... changed!
Domain name(s) are not matching!
Names in old certificate: letest.lexore.net
Configured names: letest.lexore.net subdomain.letest.lexore.net
Forcing renew.
Checking expire date of existing cert...
Valid till Sep 24 12:48:00 2021 GMT (Longer than 80 days). Ignoring because renew was forced!
Signing domains...
Generating private key...
Generating signing request...
Requesting challenge for letest.lexore.net...
Requesting challenge for subdomain.letest.lexore.net...
Responding to challenge for letest.lexore.net...
Challenge is valid!
Responding to challenge for subdomain.letest.lexore.net...
Challenge is valid!
Requesting certificate...
Checking certificate...
Done!
Creating fullchain.pem...
Done!
Правка конфига nginx, перезапуск, и вот новый сертификат работает уже на два домена.
Домены не обязаны быть как-то связаны, можно сделать один домен для domain.com и ftp.example.net.
Максимум можно указать
100 доменов
в одном сертификате.
Кому-то этого может хватить, чтобы обойтись одним сертификатом для всех сайтов на сервере.
Правда, этот сертификат придется пересоздавать на каждый новый домен в списке, и можно упереться в лимиты.
А теперь самое приятное — автоматизация.
Для того, чтобы скрипт сам обновлял все сертификаты из файла domains.txt и вы забыли про манипуляции руками, нужно добавить одну строчку в крон пользователя le:
0 1 * * * /opt/letsencrypt/letsencrypt.sh --cron
Таким образом, алгоритм перевода последующих сайтов на https:
Это не единственный способ автоматизации, многие клиенты letsencrypt позволяют свести всю работу к запуску одного скрипта по крону.
Данный скрипт мне понравился за простоту- всю работу делает один скрипт на bash.
А так же, за свои дополнительные возможности — кроме простой автоматизации, он из коробки поддерживает «сложную» автоматизацию, запуск своих скриптов и переопределение параметров.
Например, я уже упомянул про параметр HOOK в конфиге, который позволяет запускать свой скрипт.
Так же из коробки есть параметр CONFIG_D — папка, в которой будут запускаться все .sh скрипты для переопределения параметров основного конфига.
Плюс, поддержка разных «аккаунтов» через указание разных ACCOUNTDIR — папок с приватными ключами для подписи запросов.
Мне кажется, это позволит использовать скрипт в больших и сложных инфраструктурах.
Продление сертификатов
После того, как все сертификаты получены и настроены сайты и службы их использующие встает вопрос об их продлении. Мы помним, что срок действия сертификата — 90 дней, поэтому если их много и получены они в разное время, то вручную следить за всем этим хозяйством будет весьма и весьма проблематично.
Разобраться в теории
Конечно, начать стоит с теории. Плохая новость: ее много. Очень много. Вторая плохая новость: ее придется прочитать. Это нужно сделать потому, что в программе много специфических тем (одна этика чего стоит), знание которых вам не гарантирует ни одно профильное образование (привет, МИЭФ!).
Но хорошая новость в том, что и тут есть обходные пути. Многие используют для подготовки огромные книжки вроде Schweser (5 книг по 500 страниц только для CFA Level I). Они дают подробный и детальный материал, но работа с ним не самая эффективная, ведь существуют слайды.
Time estimate: 5–20 часов (мои затраты — 10 часов).
Но на этом работа с теорией не заканчивается, потому что очень важно закреплять ее практикой и сразу после прочтения материала отвечать на вопросы по нему. Так как теории очень много, то эффективнее всего работать с отдельными темами. Я поставил себе бенчмарк — 70 %.
Пока я не набирал этот результат в тесте по каждой теме, не переходил к следующей. Это был своеобразный контроль качества. Тут нужно иметь доступ к аналитике ответов (он есть на всех хороших платформах), чтобы сравнивать свой процесс с бенчмарком. Важно иметь возможность детализировать свои результаты и видеть процент правильных ответов не в среднем по теме, а конкретно по каждой подтеме, ведь в CFA есть несколько уровней контента (большие категории — конкретные темы — подтемы — группы вопросов [LOS]). Чем подробнее детализация, тем лучше можно проанализировать свои результаты.
Time estimate: 10–30 часов (мои затраты — 20 часов).
Регистрация в let’s encrypt
Регистрация нужна для формирования ключевой пары, которой впоследствии подписываются все запросы, что позволяет удостовериться в подлинности отправителя. Это важно, так как все запросы передаются по открытым каналам и теоретически возможен их перехват и модификация.
Адрес электронной почты указываемый при регистрации используется для рассылки уведомлений, например, при неудачной попытке продления сертификата, поэтому следует указывать рабочий ящик, лучше всего собственный. Один и тот-же адрес можно использовать для регистрации на разных хостах, ограничений по этому параметру нет.
Для регистрации выполните команду:
Решить пробные вопросы
Когда мы разберемся со всей теорией, можно приступать к основной практической части. Я бы рекомендовал работать с блоками вопросов по 120 штук (это половина самого экзамена CFA) и разбирать каждый вопрос сразу после его решения. То есть не откладывать разбор на конец, а анализировать сразу после каждого вопроса.
Сначала стоит включать в эти большие тесты все категории вопросов, а потом потихоньку выкидывать те, в которых процент правильных ответов стабильно выше 70 %. Таким образом, через какое-то время останется всего несколько самых сложных категорий, а потом и вовсе ни одной. Теперь пора переходить к следующему блоку.
Time estimate: 10–30 часов (мои затраты — 10 часов).
Сдать пробные экзамены
Теперь начинается самое интересное — симуляция экзамена, то есть решение моков. Сам экзамен длится шесть часов всего с одним часовым перерывом. Помимо этого, есть достаточно длительные административные процедуры. В итоге экзамен занимает около девяти часов.
К этому надо быть готовым, и моки отлично помогают. Начать можно с решения моков онлайн, а потом стоит попрактиковаться в оффлайне. Многие компании предлагают возможность написать тренировочный CFA ближе к дате проведения экзамена. Это помогает привыкнуть к формату и проверить свои силы.
После решения моков стоит снова перейти к анализу и определить, с какими темами у вас больше всего проблем. Дальше переходим к блоку II и повторяем снова.
Вместо заключения
Путём несложных манипуляций с CRD мы научились выписывать автопродляемые, самоподписанные и бесплатные SSL-сертификаты от проекта Let’s Encrypt для доменов сайтов, запущенных в рамках Ingress’ов в Kubernetes-кластерах.
В статье приведены примеры решения наиболее частых в нашей практике задач. Однако функции cert-manager не ограничиваются описанными выше возможностями. На сайте утилиты можно найти примеры работы с другими сервисами — например, связка с Vault или же использование внешних выпускающих центров (issuers).
Заключение
Конечно, подобный подход не гарантирует, что вы уложите вашу подготовку в 60 или даже 100 часов. Здесь все зависит от вас и вашего бэкграунда. Например, на освоение теории может уйти около 5 часов, если вы были топовым студентом в топовом финансовом вузе, а может и 20 часов, если вы учились не очень хорошо или не по этой специальности.
