Подтвердить что ты не робот

Почему нельзя использовать один SSL-сертификат для нескольких машин?

Вот ситуация. Я вношу изменения в приложение, но у меня нет тестовой среды. Для тестирующей команды есть сервер QA, но я бы скорее протестировал приложение на своей локальной машине (развертывание изменений на этом сервере может прервать тестеры). Я установил среду на моем локальном компьютере, но есть проблема.

Приложение считывает данные из стороннего приложения. Для подключения к третьей стороне необходим сертификат SSL.

Мой вопрос: почему я не могу использовать SSL-сертификат с сервера QA на своей локальной машине?

Я сделал беглый поиск в Stack Overflow, и мне кажется, что после того, как сертификат выдается из CA, любой компьютер может его использовать. Я предполагаю, что я неправильно понял часть процесса SSL.

4b9b3361

Ответ 1

SSL-сертификат привязан к фактическому имени хоста. Если у вас есть сертификат SSL для "qa.example.com", он не будет работать на вашем компьютере с именем "dev.example.com".

Возможно, проблема, с которой вы столкнулись.

Ответ 2

Я предполагаю, что то, что вы описываете, выполняет аутентификацию SSL-клиента удаленному третьему лицу. То, что ваш продукт инициировал подключение к третьим частям в качестве клиента, а третье лицо решает, достаточно ли для этого сертификата достаточно для подключения.

Сертификат по существу состоит из трех вещей:

  • Закрытый ключ, которому должен обладать только объект, представленный сертификатом
  • Открытый ключ - ключ, который делится с миром
  • информация о сертификате, которая включает открытый ключ, а также считываемые данные, идентифицирующие владельца ключа - это криптографически подписывается эмитентом сертификата.

Итак... это немного больше, чем просто пароль, но в конце все данные.

Ответ на вопрос, можно ли установить сертификат клиента SSL в нескольких местах, - это да и нет. В основном это зависит от требований безопасности сторонней системы, а также от того, как вы сохранили этот закрытый ключ.

В файле можно сохранить пару закрытого/открытого ключа и сертификат - один из стандартных для этого - PKCS # 12. Обычно PKCS12s защищаются паролем. Многие программные средства позволят вам создать пару ключей, сохранить их в PKCS12 и выполнить различные протоколы сертификатов, необходимые для запроса и завершения выдачи сертификата третьей стороне (я подозреваю, что ваша сторонняя сторона требует, чтобы ваш сертификат был подписан одним списка доверенных эмитентов). Каждый сервер приложений, который я видел, затем позволяет настроить файл сертификата как сертификат вашей клиентской стороны.

Если это так, как хранится сертификат SSL QA, тогда не должно быть проблем с его установкой на вашем компьютере.

Здесь улов - иногда политика безопасности требует, чтобы сертификаты хранились на аппаратном токене. Обычно это мера безопасности, гарантирующая, что только один объект может использовать сертификат. Копирование файлов сертификатов программного обеспечения отлично работает в тестовой среде, но это довольно плохая практика безопасности для установки рабочего продукта. Если сервер QA использует аппаратный токен, аппаратное обеспечение, скорее всего, защитит копирование пары закрытого ключа в другое место. Без доступа к паре закрытого ключа вы не сможете выполнить запрос SSL для стороннего производителя - демонстрация доступа к закрытому ключу является частью протокола.

В этом случае вам нужно будет запросить собственный сертификат и пару ключей для доступа к третьей стороне - если только ваша компания не предлагает механизм совместного использования аппаратных токенов. Это не совсем сумасшествие - некоторые серверные фермы делают это - все серверы имеют конфигурацию, чтобы подключиться к общему сетевому HSM (аппаратный модуль безопасности) и использовать пару ключей. Это часто верно для сертификатов SSL-сайтов, поэтому все серверы в коллекции могут отображаться на одном сервере. Трюк - это аппаратное обеспечение довольно высокого уровня. Если вы выполняете какое-то быстрое и грязное тестирование, я думаю, что вряд ли будет доступ к такой системе.

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

Ответ 3

Я знаю, что это более старая должность, и я, возможно, что-то пропускаю, но кажется, что все пропустили настоящий ответ здесь. Если вы хотите иметь один сертификат, который работает на нескольких серверах с использованием нескольких имен хостов/доменов, вам просто нужно купить сертификат SAN. Мы делаем это все время на работе...

Ответ 4

Это определенно возможно, как еще работали бы серверы в веб-ферме? Все серверы в веб-ферме имеют одинаковый сертификат.

У меня нет опыта работы с Apache, но для IIS процесс документирован здесь http://support.microsoft.com/kb/313299

Ответ 5

SSL-сертификаты привязаны к имени хоста. Поэтому, чтобы иметь возможность использовать его в вашей машине-разработчике, вы должны сделать разрешение имени узла для вас dev-машиной (то есть с использованием файла hosts)

Ответ 6

Обычно во время установления связи SSL имя хоста, входящее в сертификат, соответствует имя хоста другой стороны SSL-соединения. Вот почему сертификат привязан к имени хоста.

Есть несколько путей выхода из этого.

  • Используйте сертификат wild card.
  • Отключить проверку имени хоста и принять повышенный риск.
  • Настроить проверку имени хоста.

См. http://support.godaddy.com/help/article/567/what-is-a-wildcard-ssl-certificate и http://docs.oracle.com/javase/7/docs/api/javax/net/ssl/HostnameVerifier.html

Ответ 7

@Kyle Jones - Мой вопрос в том, почему я не могу использовать сертификат SSL из сервер QA на моей локальной машине?

@autonomatt - Вопрос: VeriSign и другие компании спрашивают, как многие сервер вы устанавливаете SSL-сертификат на... получение нечетных клиент звонит, заявив, что их браузер сообщает о проблеме w/ сертификат...

Юридически? Вы можете установить SSL Cert на нескольких компьютерах, но, возможно, не сможете сделать это на законных основаниях. Компания Signing CA, как и Network Solutions, имеет правовые ограничения на покупку. Когда вы приобретаете сертификат SSL, вы приобретаете его для установки только на одном компьютере. Вы должны прочитать условия подписания ЦС, из которых вы приобретаете сертификат.

Технически? Технически, за исключением некоторых аппаратных ускоренных SSL-серверов, да, вы можете скопировать KEY и CRT на любой веб-сервер для обслуживания действительного SSL-соединения. Обратите внимание, что некоторые сертификаты SSL отправляются/предоставляются из ЦС с цепочкой сертификатов, которая также должна быть установлена ​​на стороне серверов. Без установленной цепи сертификации клиентский веб-браузер не может правильно проверить сертификат SSL. Вы должны проверить, предоставляется ли CA Chain сертификату SSL, предоставленному ЦС подписания.

Требования к IP-разрешению. И сертификат SSL привязан к имени хоста. Когда клиентский веб-браузер делает запрос на сервер, он подключается к IP-адресу, разрешенному из имени домена, а затем начинает процесс установления связи SSL/TLS. Веб-сервер, отвечающий на этот IP-адрес, должен предоставить сертификат SSL с общим именем, запрашиваемым веб-браузером клиента через IP-адрес. Это означает, что можно настроить только один сертификат SSL на один IP-адрес. Клиент отправляет только зашифрованные HTTP 1.1 запросы, поэтому сервер не имеет представления о том, каков фактический запрос домена для клиента до тех пор, пока не будет достигнуто подтверждение SSL/TLS.

Непроизводственное разрешение IP. Чтобы установить в другом месте, веб-браузер должен правильно решить имя хоста на IP-адрес. Поэтому, если вы находитесь в непроизводственной среде, клиент должен решить IP-адрес иначе, чем производственная среда. Это может быть выполнено с альтернативными DNS-серверами, или файл локальных хостов всех машин нуждается в альтернативном разрешении DNS.

Процесс технической установки.. Чтобы установить сертификат SSL на другой компьютер, скопируйте KEY, SSL CRT и цепочку CA в соответствующие файлы, настроенные для веб-сервера. Если Apache, он может все входить в один файл PEM для SSL Cert.

Затем убедитесь, что веб-сервер обслуживает этот файл PEM на IP-адресе, который разрешает общее имя в сертификате SSL.

Сертификаты SSL подстановочных знаков. Некоторые CA также предоставляют сертификаты SSL для Willdcard, например *.domain.com. Обратите внимание, что веб-браузер должен распознавать этот тип сертификата и защищает только один уровень поддомена. Таким образом, www.domain.com можно защитить, но www.sub1.domain.com заставит клиентский веб-браузер дать пользователю клиента ошибку проверки.

Некоторые причины, по которым клиентские веб-браузеры получают ошибки проверки сертификата SSL:

  • если необходима цепочка CA, но не предоставляется веб-сервером.
  • если CA-корневой ЦС не является доверенным центром сертификации в веб-браузере клиента SSL - это всегда верно для самоподписанных SSL-сертификатов.
  • если веб-браузер клиента запрашивает домен через SSL, который не совпадает с общим именем сертификата SSL.
  • Если клиентский браузер не может получить доступ к точкам распространения CRL x509 из ЦС подписи, поэтому клиент в ограниченной или закрытой сети не сможет проверить SSL-сертификат. URL-адрес CRL предоставляется во время установления связи SSL/TLS. См. Также: http://en.wikipedia.org/wiki/Revocation_list#Problems_with_CRLs.

Ответ 8

Сертификат содержит информацию: 1) Детали, такие как имя, домен, адрес, дата истечения срока действия ключа и т.д. О компании /indvidual, которая содержит сертификат. 2) Он имеет открытый ключ. 3) Некоторые зашифрованные данные. Это суть.

Это зашифрованные данные - это все userinfo, а также открытый ключ, присутствующий в сертификате, который был подписан секретным ключом CA, который выдал сертификат.

Когда браузер получает сертификат, он пытается дешифровать зашифрованные данные, используя открытый ключ CA, уже встроенный в браузер. Поэтому, если вся информация, присутствующая в сертификате, совпадает после отмены подписания, она гарантирует, что владелец этого домена, упомянутый в сертификате, имеет закрытый ключ, соответствующий открытому ключу, указанному внутри сертификата.

Итак, если кто-то издает (например, сайты), что я являюсь владельцем сертификата, это означает, что человеку/компании принадлежит соответствующая пара частных ключей.

СЛЕДУЮЩИЙ В НОМЕР: Реальная проблема заключается в том, что "Приложение считывает данные из стороннего приложения. Для подключения к третьей стороне требуется сертификат SSL".

и этот сертификат. В основном ваше приложение хочет установить SSL-соединение с сторонним приложением, и если у вас есть сертификат, вы все настроены. Итак, сначала я предполагаю, что вы поместили сертификат в неправильный каталог, чтобы ваше приложение не смогло его прочитать и не удалось выполнить ssl-соединение с третьим лицом. Или есть проблема с настройкой файла.

Я знаю, что ответ бесполезен, но я подумал, что лучше писать то, что я чувствую.

Ответ 9

Думаю, вам нужно немного подробнее рассказать о своей среде, но, возможно, вы не скопировали частную часть сертификата на свой локальный компьютер. Для использования сертификата необходимы как закрытый, так и открытый ключ. Я предполагаю, что вы пишете "читать от третьего лица", что используете клиентский сертификат.

Ответ 10

В этих ситуациях третья сторона обычно выполняет одну из двух задач. Предоставьте вам доступ к изолированной программной программе QA, которая не требует сертификата. или разрешить вам сделать временный сертификат, который они будут принимать, который не подтвержден центром сертификации. Было бы странно, если сторонний поставщик веб-услуг не будет предусматривать необходимость иметь разные QA и prod. сред.

Ответ 11

Хорошо технически, сертификат (экспортированный из этих инструментов PKI там) не будет содержать закрытый ключ. Поэтому даже в среде с балансировкой нагрузки обычное копирование сертификата не поможет?

Кроме того, когда мы генерируем сертификаты с использованием инструментов PKI, вы можете предоставить произвольную строку для DN (например, "CN = xyz, OU = ttr, O = x" ). Интересно, каково было бы поведение, если разные машины используют один и тот же DN для создания сертификатов?

Ответ 12

Я понимаю, что мой ответ на этот вопрос слишком поздно в потоке. Но сегодня я столкнулся с той же проблемой при установке того же сертификата на 2 сервера в конфигурации балансировки нагрузки, OS = Windows 2008/IIS 7.5 и смог для определения решения.

Мне удалось установить его на первом сервере, нажав "Полный запрос сертификата" и переместившись в место, где находится сертификат "abc.cer" (предположим, что у вас есть сертификат уже с вами). Затем я скопировал тот же "abc.cer" на втором сервере и попробовал "Полный запрос сертификата", и это не сработало. Сертификат появится как установленный, но исчезнет, ​​как только я обновил диспетчер IIS. Затем я попробовал вариант "экспорта" сертификата с первого сервера (он генерирует файл расширения .pfx), а затем импортировал его на втором сервере. Этот метод работал.

Ответ 13

Это зависит от того, что вы подразумеваете под этим

Один сертификат подстановки может использоваться для нескольких хостов с разными записями A.

Например, у вас есть подстановочный сертификат для домена *.stackoverflow.com.. Вы можете иметь одобренный CA TLS, пока новые серверы, на которых вы работаете, используют субдомен домена stackoverflow.com

то есть. mail-server.stackoverflow.com