Необходимые условия SSL-сертификата для использования службы HTTPS

Я понимаю, что вопросов о сертификатах SSL очень много, но после долгих поисков я не смог найти точного ответа на следующую путаницу.

При каких обстоятельствах для одностороннего SSL потребителю веб-службы HTTPS необходимо импортировать поставщика сертификата/открытого ключа указанной веб-службы? Раньше я использовал несколько веб-сервисов через https, и мне никогда не приходилось добавлять сертификат или открытый ключ другой компании в хранилище ключей (или это хранилище доверия?) любого устройства в моей компании.

И все же, по-видимому, иногда это так, о чем свидетельствуют следующие примеры:

механизм сертификации между поставщиком веб-сервиса и потребителем

https://stackoverflow.com/questions/11429810/using-restful-service-over-https-with-certificate-using-java

Это необходимо только в том случае, если поставщик сертификата службы не выдан центром сертификации, известным потребителю?

Кроме того, если потребителю в конечном итоге придется импортировать сертификат поставщика, И если потребляющее приложение потребителя само состоит из клиентской части и серверной части, импортирует ли потребитель его в магазин веб-сервера потребителя или в хранилище каждого клиентского компьютера в компании потребителя?

Наконец, для двустороннего SSL, отправляет ли потребитель свой собственный клиентский сертификат с кодом, который выполняется на его (возможно, многих) клиентских компьютерах или на его собственном веб-сервере?

Спасибо за любые разъяснения.


person RTF    schedule 08.09.2019    source источник


Ответы (1)


Это необходимо только в том случае, если поставщик сертификата службы не выдан центром сертификации, известным потребителю?

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

в магазин каждого клиентского компьютера в компании-потребителе?

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

отправляет ли потребитель свой собственный клиентский сертификат с кодом, который выполняется на его (возможно, многих) клиентских компьютерах или на его собственном веб-сервере?

непонятно, что вы имеете в виду. Можно подробнее?

обновление:

Это зависит от того, как сторонний сервер аутентифицирует вас. Могут ли они идентифицировать ваше приложение как единое целое или им требуется различать каждого внутреннего пользователя. В первом случае достаточно иметь один клиентский сертификат в вашем приложении, и у вас будет два отдельных TLS-соединения:

3rd party server <--TLS--> Your App <--TLS--> End user (many)

Конечные пользователи подключаются и аутентифицируются только в вашем приложении. При необходимости ваше приложение устанавливает отдельное TLS-соединение со сторонней организацией, и работа выполняется. Это довольно распространенная практика. Конечные пользователи не знают о стороннем сервере, а сторонний сервер не знает о ваших внутренних пользователях (и, вероятно, не должен знать).

person Crypt32    schedule 08.09.2019
comment
Уточнение последнего пункта: предположим, у меня есть приложение Silverlight в моей интрасети. Он состоит из серверной части, которая работает на моем сервере, и клиентской части, которую потребляют, скажем, сотни клиентов в моей интрасети. У вас есть веб-служба, работающая на вашем сервере где-то в Интернете, и вы соглашаетесь позволить моему приложению использовать ее. Однако для его использования требуются клиентские сертификаты. Когда один из моих многочисленных клиентов использует ваш сервис, он, очевидно, должен сначала пройти через мой сервер. Итак, сертификат клиента, который мы отправляем, находится на моем сервере или уникален для каждой клиентской машины в моей интрасети? - person RTF; 08.09.2019
comment
Спасибо за ваш ответ. Я видел пример кода в файле кода на стороне сервера, который получает учетные данные X509 из хранилища и прикрепляет их к WebRequest для подключения к веб-службе, поэтому я предполагаю, что это подразумевает сертификат клиента, который мы отправляем в таком case на самом деле является одним сертификатом, размещенным на нашем веб-сервере и общим для всех клиентов в нашей интрасети. - person RTF; 08.09.2019
comment
Да, это правильно. Ваше приложение не имеет и не должно иметь прямого доступа к клиентским ключам, принадлежащим внутренним пользователям. - person Crypt32; 08.09.2019