У нас есть серверы Windows, которые защищены брандмауэром и не имеют доступа к Интернету. Некоторые из них являются веб-серверами (для интрасети), а некоторые - серверами приложений, базами данных, файлами и т. Д.
Некоторые приложения требуют входа в систему, и из-за отсутствия сертификатов SSL браузер будет отображать предупреждение для пользователя всякий раз, когда он видит поле ввода на странице.
Мы не можем настроить веб-сервер для использования HTTPS, так как у него отсутствует сертификат SSL.
Мой вопрос: есть ли способ настроить сервер для использования HTTPS, даже если у него нет доступа к Интернету?
Если да, то как на него установить сертификат? Я понимаю, что должен где-то купить сертификат, но как мне установить его на все серверы?
Где я могу узнать больше о том, что применимо к нашей установке?
Когда у вас есть контроль над клиентами, которые будут подключаться к вашим серверам, одним из подходящих решений будет создание самозаверяющего внутреннего центра сертификации.
Теоретически вы бы создали корневой сертификат, который должен быть защищен и отключен. На основе этого вы должны создать дочерние сертификаты CA, которые следует использовать для подписи реальных сертификатов сервера. Затем вам нужно будет развернуть соответствующие открытые ключи на всех компьютерах, которые подключаются к внутренним службам, чтобы установить доверительные отношения.
В среде Windows вам может помочь документация Microsoft: https://docs.microsoft.com/en-us/windows-server/networking/core-network-guide/cncg/server-certs/server-certificate-deployment-overview.
В более открытой среде есть несколько способов продолжить, обычно на основе OpenSSL и дополнительных инструментов. Система поиска в Интернете - ваш друг.
Перед вами есть несколько вариантов.
Чтобы получить «настоящий» сертификат (то есть тот, которому по умолчанию доверяют браузеры), вам необходимо подтвердить доступ к домену. Это делается одним из трех способов:
Таким образом, вы можете использовать 2 или 3 для получения «настоящего» сертификата. Самый популярный бесплатный центр сертификации Let's Encrypt поддерживает только методы 1 и 2, а 2 зависят от того, имеет ли ваш DNS автоматизированный API для добавления записей, поэтому не всегда вариант. Другие центры сертификации будут поддерживать все 3 метода и объяснять, как это сделать, но обычно взимают плату за свои услуги, поскольку они носят ручной характер.
Другой вариант - получить групповой сертификат (например, для *.example.com
), который можно использовать для любого внутреннего адреса (например, internal.example.com
). Этот сертификат с подстановочными знаками можно подтвердить способом, аналогичным описанному выше (хотя некоторые центры сертификации могут не разрешать все эти методы проверки для сертификатов с подстановочными знаками. Let's Encrypt, например, разрешает выпуск сертификатов с подстановочными знаками только через проверку на основе DNS). Если вы получаете сертификат с подстановочными знаками, это позволяет повторно использовать его на любых серверах в этом домене (например, intranet.example.com
, dev.example.com
, и т.д.). Это, конечно, имеет другие риски, если вы делитесь ключом с несколькими серверами / владельцами / отделами.
И, наконец, как уже упоминалось другими, вы можете создать внутренний центр сертификации для создания самозаверяющих сертификатов. Эти будут не распознаваться браузерами по умолчанию, поскольку они не были выданы признанным "настоящим" центром сертификации. Однако вы можете добавить корневой ключ CA на свой компьютер, чтобы он распознавался. Это часто является хорошим вариантом для корпоративных сред, где вы можете убедиться, что этот корневой ключ установлен на всех устройствах с помощью политики и поэтому он эффективно действует как настоящий сертификат. Подробное описание того, как это настроить, выходит за рамки этого ответа ...
На мой взгляд, есть два пути: либо создать так называемый самозаверяющий сертификат, либо получить бесплатный от такой службы, как Давайте зашифровать.
Создание самозаверяющего сертификата зависит от вашей среды, и самый простой способ - поискать его в Google. Например, для Linux и Apache вы можете следуйте этому рецепту, но есть и другие, как вы увидите.
Установка сертификатов зависит от используемого вами сервера, и здесь я должен попросить вас проверить документацию на тот, который у вас есть. Он отличается между Apache, Nginx, IIS или что-то еще, но все они имеют отличную документацию