Как стать автором
Обновить

Комментарии 20

Имхо, такой подход неверен. Для локальной разработки лучше выпустить самоподписанный сертификат и добавить его в исключения браузера. Следующий этап - не выставление Томката в интернет, а добавление к приложению веб-сервера, который и будет заниматься терминированием шифрования, помимо прочего.

Ну тут не только для локальной разработки. Тут вы как минимум уже покупаете домен, что уже может давать путь в открытый интернет и выхода в прод для своего проекта. А HTTPS браузерами "поощряется", и это отличный SEO подход для выхода в топ-10

А HTTPS браузерами "поощряется"

Не только "поощряется", но и принуждает из-за HSTS например, или просто на сервере настроено правило.

Самый просто способ для меня был Cloudflare, бэкенд на субдомен с https, фронт на домен с https. Бесплатно, красиво имеем защиту, кэш фильтры.
Можно конечно и все selfhosted.

Только в РФ ip-адреса CF периодически блочат, к сожалению. Из-за этого от CF приходится отказываться в случаях, когда это всякие магазины и прочие сервисы на неограниченное число людей.

Зачем? Пусть прокси сервер слушает https с настроенными сертами. А спирнг в котейнере крутиться.

Без привязанного к вашему серверу домена вы не сгенерируете сертификат.

Это не обязательно, есть режим генерации сертификата с использованием DNS. Всё что нужно, это иметь возможность управлять DNS записями вручную или с помощью API, если DNS хостинг предоставляет такую возможность. Для генерации сертификата через DNS даже не надо привязывать домен к IP. И еще большой плюс такой генерации - можно создать wildcard сертификат, например, для *.vashdomen.ru

можно создать wildcard сертификат, например, для *.vashdomen.ru

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

А вот wildcard на стороне запросов DNS (чтобы не прописывать адреса для всех поддоменов) не все серверы поддерживают.

А вот wildcard на стороне запросов DNS (чтобы не прописывать адреса для всех поддоменов) не все серверы поддерживают.

Вот если честно, то это должен быть совсем дешманский DNS хостинг, чтобы не мог поддерживать wildcard записи

А вот wildcard на стороне запросов DNS (чтобы не прописывать адреса для всех поддоменов) не все серверы поддерживают.

Вообще я затупил. Причем тут wildcard DNS записи к генерации wildcard сертификата? При генерации сертификата через DNS нужно добавить у провайдера TXT запись, которую попросит certbot. А A-записей может вообще не быть у провайдера, их хоть в /etc/hosts добавляй вручную

Причем тут wildcard DNS записи к генерации wildcard сертификата?

Ну, то что не нужно на DNS создавать записи типа site1.domain site2.domain site3.domain указывающие на один и тот же IP, а можно создать *.domain и при запросе любого поддомена будет указывать на один и тот же IP.

Для генерации wildcard сертификата не нужно создавать A-записи вида *.example.com, либо любую другую для отдельных доменов. certbot просит создать TXT и вставить содержимое, которое он даст. Например,

# certbot certonly --manual --preferred-challenges dns -d *.nekij-domen.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for *.nekij-domen.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name:

_acme-challenge.nekij-domen.com.

with the following value:

5pt0CXrH_icMfYXLae-jmGZV6SxZohQVWrrZ3pyYKyk

Обратите внимание, что домен на текущий момент даже не зарегистрирован, но certbot предлагает создать TXT запись _acme-challenge.nekij-domen.com с содержимым 5pt0CXrH_icMfYXLae-jmGZV6SxZohQVWrrZ3pyYKyk

Т.е. можно сгенерить wildcard сертификат, а домены создавать одиночные, не обязательно создавать wildcard DNS запись. Например, site1.example.com на одном сервере размещается, site2.example.com на другом с соответствующими A-записями, а сертификат можно один и тот же забросить на эти два сервере

Ладно, закроем тему. Я немного непонятно выразился, вы меня не поняли. =)

а при чем тут Spring ?!

Ходить на бекенд по хттпс это все же извращение. Хттпс это трата допресурсов, на хайлоаде это стрелять себе дуплетом в обе ноги сразу. Бекенд должен работать внутри периметра, а там хттпс как бы не особо нужен.

Все истории про бекенд через хттпс которые я слышал, были связаны с вынужденным (внезапным) переносом бекенда куда то в другой ДЦ и это скорее исключение, чем норма.

HTTP/2, gRPC, не?

gRPC не везде есть, а насчет HTTP/2 я не уверен, что он нужен бекенду, вернее что будет какой-то выигрыш

Бекенд должен работать внутри периметра, а там хттпс как бы не особо нужен.

...разве что вы захотите пройти аудит какой-нибудь PCI DSS :) Тогда и шифрование понадобится, и нормальная PKI, и вменяемый набор шифров.

ну так то да

Сразу три антипаттерна. Терминирование TLS (Level 6) сервисом (Level 7), отсутствие автообновления сертификата, выставление сервиса в публичный Интернет без базовой защиты от атак.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории