Недавно я начал работать в качестве инженера системного оператора. Однако мне все еще не хватает некоторых основ, особенно в отношении сертификатов SSL/TLS и их связи с DNS.
Вот пример использования:
- Компания, с которой мы имеем дело, имеет свой собственный веб-сайт и домены, с собственными сертификатами SSL. Мы назовем их домен, который я хочу использовать здесьданные.пример.com
- Мы размещаем наш собственный веб-сайт и домены, с нашими собственными сертификатами SSL. Мы назовем наш домен Я хочу использовать здесьourdata.ourexample.com
- Компания, с которой мы имеем дело, хочет, чтобы, когда вы идете кhttps://data.example.com, вы фактически получаете содержимоеhttps://ourdata.ourexample.com
Насколько я понимаю, для этого есть две возможности:
- (для меня это довольно очевидно) Создайте перенаправление на уровне веб-сервера либо через nginx/apache: это подразумевает, что у обоих доменов по-прежнему есть свои собственные SSL-сертификаты, но это всего лишь вопрос написания нескольких строк в файле конфигурации, не имеющем ничего общего с какой-либо конфигурацией DNS.
- (вот тут для меня все становится сложнее) Попросите компанию, с которой мы работаем, предоставить нам информацию о КСО (https://en.wikipedia.org/wiki/Запрос_на_подписание_сертификата) чтобы мы могли сгенерировать файл CSR... из закрытого ключа, который мы используем для генерации наших собственных сертификатов SSL...? Затем мы передаем CSR, и они платят за свой собственный сертификат SSL. Затем они могут создать новый CNAME, который будет перенаправлятьdata.example.com.кourdata.ourexample.com.. Мне сказали, что CSR — это своего рода открытый ключ, поэтому мы можем легко передать его кому-то другому. Но даже если это описание правильно описывает процесс, я честно говоря теряюсь в том, что происходит, где и почему это делается.
Наконец, я заметил, что в случае, когда CSR был сгенерирован с нашей стороны и была создана запись CNAME, когда мы переходим кhttps://data.example.com, мы видим содержаниеhttps://ourdata.ourexample.comи URL, отображаемый в браузере, остаетсяhttps://data.example.com. Я не уверен, связано ли это с какой-то конфигурацией веб-сервера или с «настройками» DNS.
Надеюсь, что то, что я описал, более-менее понятно. Если нет, дайте мне знать, и я постараюсь предоставить больше подробностей.
Примечание: я уже пытался найти ответы на эти вопросы, но, хотя я и понял кое-что, на 100% все еще не ясно.
Спасибо, SilentSib
решение1
Я предполагаю, data.example.com
что будет размещен натвойпомещения и example.com
не хочет, чтобы их клиенты видели, что вы предоставляете услуги.
Если это так, то вам просто нужно два Apacheвиртуальные хостыили два nginxвиртуальные серверыкоторые настроены на обслуживание одного и того же контента.
А как насчет сертификатов? Это не очень сложно, если вы понимаете концепциикриптография с открытым ключом.
В принципе (в одном из наиболее используемых алгоритмов,ЮАР), у вас есть два ключа A
и B
. Данные, зашифрованные с помощью, A
могут быть расшифрованы только с помощью B
( A
невозможно расшифровать их) и наоборот. Вы распространяете один из них и называете егооткрытый ключ, другой хранится в секрете и называетсязакрытый ключОткрытый ключ используется для шифрования данных, расшифровать которые можете только вы, закрытый ключ также можно использовать для подписи: зашифровав заранее согласованную последовательность байтов (например, хэш сообщения) закрытым ключом, все остальные смогут расшифровать ее и убедиться, что у вас есть закрытый ключ.
Остальные частиинфраструктура открытого ключаявляются:
- сертификаты: файл, содержащий ваш открытый ключ, ваше доменное имя и некоторые другие данные, подписанные доверенным лицомзакрытый ключ(чей открытый ключ распространяется и пользуется доверием каждого браузера). Толькодоменное имянаходится в сертификате, а не какие-либо другие данные
DNS
(ну, вы можете попросить добавить свой IP-адрес в сертификат, если хотите), поэтому вам не придется менять их, если что-то изменится. - CSR: почти то же самое, что и сертификат. Он содержит ваш открытый ключ, ваше доменное имя и некоторые другие данные, подписанные вашимзакрытый ключ(чтобы показать, что у вас есть ключ). На практике центры сертификации используют только открытый ключ из CSR и иногда доменное имя (если они не берут его из HTML-формы).
Закрытые ключи стоят дёшево (пара секунд для генерации на загруженном сервере). Очень маловероятно, что ваш клиент использует один и тот же закрытый ключ для data.example.com
и example.com
(если только у них нет обоих имен в одном сертификате). Итак:
- Если у вашего клиента уже есть сертификат для
data.example.com
, попросите его отправить вам сертификат и соответствующий ему закрытый ключ (безопасным способом). Он больше не будет их использовать, - Если у вашего клиента нет сертификата для
data.example.com
, сгенерируйтеновыйзакрытый ключ и сертифицируйте его.Неиспользуйте закрытый ключ для других доменов. Обычно генерируется новый закрытый ключ, даже при обновлении сертификата. Если вы поставитеourdata.example.net
тот же сертификат, все будут видеть, кто предоставляетdata.example.com
услуги. - Вы также можете использоватьДавайте зашифруемесли ваш клиент согласен с их условиями. Таким образом, вы можете получить действительный сертификат за считанные секунды и без дополнительных затрат.