Обновить
8K+
9
Maksim Didenko@DidenkoMS

Разработчик-эксперт

Отправить сообщение

От Root CA до User Authorization в nginx+apache. Часть 4. Свой web-УЦ: выпуск из браузера, роли и аудит

Уровень сложностиСредний
Время на прочтение82 мин
Охват и читатели6.2K

Четвёртая часть цикла про свой удостоверяющий центр. В первой мы развернули Root CA и три промежуточных центра, во второй научились отзывать сертификаты и подняли OCSP-responder, в третьей настроили вход по клиентскому сертификату в nginx и Apache. Осталось ответить на вопрос, который возникает сразу после первого успешного входа: а откуда у людей берутся сертификаты?

Пока удостоверяющим центром пользуется один человек, openssl в терминале — идеальный интерфейс. Как только приходит второй с просьбой «выпусти мне тоже», начинается то, ради чего существуют регистрационные центры: заявки, роли, журнал и ответ на вопрос «кто и на каком основании это подписал».

В четвёртой части:

— PKCS#10 прямо в браузере. Ключ рождается в WebCrypto и не покидает его, запрос собирается на голом JavaScript без единой библиотеки, а результат проверяется настоящим openssl, а не «на глаз».

— Почему кнопке «получить сертификат» нельзя доверять отличительное имя: позволь заявителю назвать себя самому — и он выпишет себе сертификат с DN администратора. Настоящий, подписанный вашим же центром.

— PKIDesk: движок управления сертификатами на Go, без единой зависимости, под Apache-2.0. Разрезан по границе доверия — у веб-части нет ни ключей УЦ, ни index.txt, ни даже бинарника openssl. Плюс пять архитектурных развилок, за которые придётся отвечать перед аудитом.

— Три дефекта, которые вылезли только на живом стенде: правило subjectAltName = supplied, которое не выполнится никогда; просроченный сертификат, который остаётся действующим и занимает subject; гонка «выпустил — сразу зашёл», где nginx запоминает неудачную проверку отзыва.

— Четыре расширенных справочника, 237 параметров: openssl req, openssl genpkey, структура PKCS#10 и Web Crypto API — синтаксис, значения, умолчания и подводные камни, сверенные с официальной документацией.

Читать далее

От Root CA до User Authorization в nginx+apache. Часть 3. Вход по клиентскому сертификату: прокси или приложение

Уровень сложностиСредний
Время на прочтение147 мин
Охват и читатели6.9K

В первой части я обещал беспарольный вход в админку. Здесь он наконец заработал.

Что внутри:

— mTLS в nginx и apache: все директивы, все переменные $ssl_client_* и SSL_CLIENT_*, семь справочников на 309 параметров, сверенных с документацией; — вход по кнопке вместо диалога выбора сертификата на первом же заходе — с отдельным хостом, одноразовым пропуском и защитой от login CSRF; — выпуск сертификата в один клик: ключ рождается в браузере и не уезжает на сервер; — свой web-УЦ на Go без единой зависимости, где ключ УЦ отделён от веба сетевой границей.

И честная часть: три дефекта, которые вылезли только на живом стенде, окно версий nginx между CVE и регрессией, и дыра, которую состязательная проверка нашла в уже работавшем коде.

Читать далее

От Root CA до User Authorization в nginx+apache. Часть 2. Отзыв сертификатов, CRL и OCSP

Уровень сложностиСредний
Время на прочтение70 мин
Охват и читатели11K

Сертификат скомпрометирован, а срок действия ещё не вышел — как сказать клиентам «больше ему не верьте»? Разбираем оба механизма отзыва, CRL и OCSP: отзыв, генерация и публикация списков, responder, stapling в nginx/apache. С полным справочником всех параметров.

Читать далее

От Root CA до User Authorization в nginx+apache. Часть 1. Создаем Root&Intermediate Certificate Authority

Время на прочтение21 мин
Охват и читатели15K
Доброго времени, Хабраюзер!

Хочу поделиться с тобой идеей беспарольной аутентификации. Недавно лазил по сайтам центров сертификаций и наткнулся на интересную вещь. ЦС использую аутентификацию по сертификату вместо пароля. Я считаю это удобным, для компании, а не для обычных интернет сайтов, где шарятся простые пользователи, но вход в АД (админ-центр сайта), было бы неплохо.
Читать дальше →

Он знает о тебе все

Время на прочтение3 мин
Охват и читатели2.9K
Он знает все… Знает о нем, о ней, обо всех нас. Его невозможно остановить, ведь он не человек, он механизм. Если вы не соблюдаете закон, убиваете, грабите, насилуете, он избавит мир от Вас. Ведь вы – это угроза обществу, вас не должно быть в этом Мире.



Пролог


— О, Исполнитель! Привет!
— Здорова. Давно же я тебя не видел, как ты?
— Даа… Я в полном порядке, было много дел, пришлось кое-что проверять… К слову, а ты дописал то, что я тебя просил?
— А как же, для тебя все что угодно! – Он улыбнулся и посмотрел на стол.
— О, это уже готовая программа, или только ее код?
— Исходный код. Но для тебя, мой друг, написан в лучшем виде! Как обычно.
— О, зря это ты так… Но раз так, давай его сюда, сам доработаю. – Невольно улыбнулся.
— Ну да, ты у нас мастер своего дела.
— Ага.

Выйдя за дверь, молодой человек услышал резкий, громкий звук. Это был взрыв.
«Похоже, что тебя больше нет с нами, мой друг, Исполнитель.» — Усмехнувшись, подумал парень. — «Говорил же, зря!»

— Теперь тебя надо спрятать — сказал он, смотря на маленькую флешку, лежавшую у него в руке. Быстро осмотрев коридор, он нашел подходящую щель, в которую было не трудно спрятать флешку. После нехитрых манипуляций со стенкой, он удовлетворяющее кивнул и скрылся с места преступления.
Читать дальше →

C#, способы хранения настроек программы

Время на прочтение5 мин
Охват и читатели167K

Введение


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

C# и app.config


На хабре уже была посвящена этому тема, поэтому… перейти

C# и Properties.Settings


Информация о Properties.Settings

Организация Properties.Settings — это обычный xml файл, который можно найти в папке пользователя:

С:\ Users \ [user name] \ AppData \ Local \ [ (Project Name) or (AssemblyCompany) ] \ [name project_cashBuild] \ [AssemblyVersion] \ user.config

Для начала нам нужно создать такие переменные для Properties.Settings. Перейдем в Properties -> Settings.settings:
Читать дальше →

Информация

В рейтинге
1 275-й
Откуда
Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Бэкенд разработчик, Разработчик баз данных
Старший
От 500 000 ₽
Python
Git
Linux
Docker
ООП
Базы данных
Высоконагруженные системы
RabbitMQ
CI/CD
Golang