Cloudflare proxy, full (strict) с доступом из внутренней сети, как?
Чет не могу сообразить как решить задачку:
Имеем внутренний сервис, который смотрит наружу. Для отсечки ботов/ненужных регионов/скрытия реального IP на CF включен proxy. Все работает, все отлично.
Повышаем безопасность - прикручиваем к сервису самоподписанный сертификат, в CF включаем режим full (шифрование от сервиса до серверов CF, без проверки валидности сертификата) - все отлично, все работает.
Вопрос, как сделать сервис (сертификат) валидным из локалки?
Варианты которые приходят в голову:
1. установить всем в локалке самоподписанный сертификат - идея так себе, по очевидным причинам (мобилы/домашние устройства и пр)
2. прикрутить к сервису LE-шные сертификаты. Теоретически должно работать - в локалке будет отдаваться LE серт, в интернете CF-proxy'шный. Но есть подозрение, что certbot, слегка удивится попытке выпустить LE-сертификат, для сервиса который отдает CF-сертификат
3. Удалить из DNS'а локальной сети адрес сервиса, чтобы вообще все ходили через CF. Привязывать внутренний сервис к внешнему для доступа выглядит как-то странно, плюс если требуется гонять большой объем данных, в локалке хочется делать это быстрее.
выглядит так как будто должен быть более простой способ решить проблему :)
Из внутренней сети делаете доступ либо по локальному доменному имени, либо по тому же имени, но резолвящемуся в локальный IP - и обрабатываемому другим конфигом веб-сервера, без mTLS.
Из внутренней сети делаете доступ либо по локальному доменному имени,
Этож издевательство над пользователями в особо извращенной форме. Люди должны в голове постоянно держать в какой сети они находятся - если ты в интернете то или на service.company.com, если в локалке то на service.local.com, если включен VPN то тоже на service.local.com. И хорошо если это браузерный сервис, а если у нас клиент это приложение, то надо каждый раз в настройки ползать. Ну и для локального сервиса все равно потребуется сертификат - самоподписанный, т.к. LE его не выдаст. Т.е. получим п.1
либо по тому же имени, но резолвящемуся в локальный IP - и обрабатываемому другим конфигом веб-сервера, без mTLS.
Не осознал идею. Другой конфиг, допустим, а сертификат то чей(какой) ставить - LE или Self-signed?
Так в этом то и вопрос - какой? Выпустится ли LE-серт если домен отдает CF-серт? Про self-sig вроде писал что это самый плохой вариант (в целом ,как и PKI)
никакого издевательства. В локальной сети - локальные DNS-серверы, отдающие локальный IP
и? Сертификат привязывается к доменному имени, а не IP
Выпуск сертификата к тому, кто обслуживает домен, прямого отношения не имеет. Если вопрос в подтверждении домена - подойдёт любой вариант, хоть HTTP, хоть DNS.
NAI, ну и пусть выпускает :) Вам-то надо, чтобы сайт, помимо CF, работал ещё и напрямую из локальной сети - поэтому я и предлагаю решения, когда сертификатом управляете вы сами.
Какой он будет, этот сертификат - выпущенный вашим локальным УЦ или Letsencrypt - дело вкуса и обстоятальств, оба варианта жизнеспособны.