Можно ли настроить nginx чтобы он использовал сертификат с другого сервера?
Тестирую одну штуку, написанную на node.js.
У нее встроен функционал cerbot от letsencrypt. Проблема в том, что к виртуалке на котором я все это запускаю нет прямого доступа из интернета, только через реверс прокси nginx. Можно ли настроить nginx таким образом, чтобы он просто высовывал наружу уже имеющийся в приложении сертификат, а сам ничего не шифровал?
При этом на прокси уже висят другие сайты со своими сертификатами.
Мои знания говорят что невозможно, но мало ли...
Нет. Это уже получится MITM (Man in the Middle).
Собственно помимо шифрования, сертификаты нужны чтобы это предотвратить.
Скорее всего вы сможете спроксировать через stream'ы. Это простое перенаправление tcp трафика, но оно не совместимо с вашим вариантом с кучей сайтов на хосте.
Lynn «Кофеман», решение конечно прикольное, но не кажется ли вам что оно совсем не рационально в контексте данной задачи? Начиная от использования модуля которого по дефолту нет в nginx, до двойного проксирования трафика для остальных сайтов?
Антон Соломонов, ну второе проксирование в рамках localhost, обычно это ни на что не влияет. А модуль в debian/ubuntu обычно собран (про другие дистрибутивы не знаю), а на «по умолчанию не собирается» вообще не смотрю. Это же просто означает, что соответствующий флаг при сборке надо ставить явно, что дистрописатели обычно делают для какой-нибудь сборки nginx-extras
Создайте virtualhost с нужным вам именем на nginx, скопируйте на сервер сертификат с вашей "штуки", прикрутив его к nginx, и проксируйте с nginx запросы на вашу штуку - хоть по https, хоть по http
Николай Савельев, certbot позволяет вызывать дополнительные скрипты в процессе своей работы. Можно добавить скрипт, который скопирует сертификат после его обновления-куда вам нужно и сделает service nginx reload.
Но как уже сказали - проще перенести certbot на сервер с nginx proxy
Сертификат от другого сервера (другого имени) можно использовать, если дать своему серверу такое же имя и иметь у себя личный ключ данного сертификата. Сертификат - это в полном смысле сертификат, который выдан на данное имя и подтверждает авторитетом выдавшего его CA (в случае с LE я бы поостерегся) что это действительно тот сайт, за который он себя выдает.