Pull to refresh

Comments 7

В рамках моей работы в ТехЦентре Дойче Банка мы в обязательном порядке для всех межсервисных взаимодействий используем SSL-сертификаты — даже в UAT окружении.

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


Но почему то не упомянуты типичные проблемы сопровождения этого зоопарка TLS ключей на все сервисы и автоматизации управление/поддержки этой инфраструктуры (обновления/хранения/генерации новых). Когда сервисов мало — это можно и вручную (хотя чревато человеческим фактором).
Вот про автоматизацию бы с удовольствием почитал.


С проблемой настроек всякой маршрутизации не сталкивались? (стандартный HostnameVerifier в JDK)
А с тем что TLS добавляет от 50 до 100 ms — с такой проблемой не сталкивались?
казалось бы мелочь… но… (например СБП дает 3 сек на валидацию перевода. И приходится за каждый 10 ms бороться)

>> мой взгляд банальная задача
Я поэтому и писал, что это введение. Разумеется тем, кто знаком с этой сферой в статье будет мало новой информации. Но большинство разработчиков, на мой взгляд, не так частно занимаются подобными вещами, поэтому им это может оказаться интересным.

>> не упомянуты типичные проблемы сопровождения этого зоопарка TLS ключей на все сервисы
Использование certbot, certnanny, настройки своего PKI и все подобное несколько выходит за рамки статьи о использовании сертификатов в java, но спасибо за идею, я подумаю о том, что б рассмотреть это отдельно.

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

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

Стандартная реализация HostnameVerifier проверяет соответствие имени хоста в сертификате клиента входящему соединению. Из за этого возникают типичные проблемы TLS handshake между клиентом и сервером при использования прокси (между двумя внутренними сетями, например)


Типичное решение вида
((HttpsURLConnection) conn).setHostnameVerifier((String hostname, SSLSession session) -> true);
это решение программиста вида: "на отвяжись от меня с этими проблемами". Нифига не безопасно, но быстро.


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

поддерживаю, хотелось бы тоже этот момент разузнать, а то был случай, тоже возился с этим HostnameVerifier
Использование certbot, certnanny

Это скорее инструменты. К тому же это все же инструменты для Let's Encrypt провайдера сертификатов
Использовать Let's Encrypt для служебных сертификатов в инфраструктуре с аутентификацией по TLS сертификату клиента — это… "странно".


Для себя проще свои написать, чем пытаться эти адаптировать под другой CA (свой или еще какой).


То же бы интересно чужой опыт узнать по автоматизации.
И от типичной проблемы "ой, мы забыли обновить сертификат (год прошел и вообще забыли про существование) и сервис неожиданно встал — это не спасает.


Дальше вариантов масса, от бумажного ежедневника, до спец самописной учетной системы


То же бы с удовольствием про чужой опыт в этом прочитал.

Да, разумеется что Let's Encrypt имеет смысл использовать лишь для личных проектов. Я привел его просто в качестве примера инструмента для управления сертификатами.
Просто настройкой инфраструктуры для управлением сертификатами, управлением своим внутренним CA и т.п. в основном занимаются другие люди.

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

Java из коробки поддерживает PKCS12 — нет никаких проблем ни при чтении этого формата, ни при создании (но не через keytool).
И, согласно JEP 229 начиная с JDK9 в качестве дефолтного формата для кейстора/трастстора выбран PKCS12.


А почему всё-таки был выбран формат JKS? Какой от этого профит?

Sign up to leave a comment.