Разница между самоподписанным ЦС и самозаверяющим сертификатом - программирование
Подтвердить что ты не робот

Разница между самоподписанным ЦС и самозаверяющим сертификатом

Я не понимаю разницы между ключом CA и сертификатом. Не является ли ключ CA просто сертификатом? Позвольте мне попытаться пояснить пример.

У меня есть клиент и сервер. Я только пытаюсь проверить мое подключение к моему серверу и не пытаюсь установить доверие к другим, поэтому мне не нужно подписываться с реальным ЦС.

Вариант 1: Создайте самозаверяющий CA (ssCA) и используйте его для подписания сертификата ( C). Затем я устанавливаю ssCA в корневое хранилище ключей на моем клиенте и устанавливаю свой сервер для использования сертификата C.

Вариант 2: Создайте самозаверяющий сертификат (SSC). Установите SSC в корневое хранилище ключей на моем клиенте. Настройте мой сервер для использования сертификата SSC.

Второй вариант кажется намного более простым процессом. Должно ли это работать?

4b9b3361

Ответ 1

Оба варианта действительны, вариант 2 проще.

Вариант 1 (настройка собственного ЦС) предпочтительнее, когда вам нужно несколько сертификатов. В компании вы можете настроить свой собственный ЦС и установить этот сертификат ЦС в корневом хранилище всех клиентов. Затем эти клиенты будут принимать все сертификаты, подписанные вашим центром сертификации.

Вариант 2 (самоподписание сертификата без CA) проще. Если вам нужен только один сертификат, этого достаточно. Установите его в хранилища ключей клиентов, и все готово. Но когда вам нужен второй сертификат, вам нужно установить его снова на всех клиентов.

Вот ссылка на дополнительную информацию: Создание центров сертификации и самоподписанных сертификатов SSL

Ответ 2

Во-первых, о различии между ключом и сертификатом (в отношении "ключа CA" ) используются три части, когда речь идет о сертификатах открытого ключа (обычно X.509): открытый ключ, закрытый ключ и сертификат. Открытый ключ и закрытый ключ образуют пару. Вы можете подписывать и дешифровать с помощью закрытого ключа, вы можете проверить (подпись) и зашифровать открытым ключом. Открытый ключ предназначен для распространения, тогда как секретный ключ должен быть закрытым.

Сертификат открытого ключа представляет собой комбинацию между открытым ключом и различными частями информации (в основном это касается личности владельца пары ключей, кто бы ни контролировал закрытый ключ), причем эта комбинация подписывается с использованием закрытого ключа эмитента сертификата. В сертификате X.509 есть различающееся имя субъекта и различающееся имя эмитента. Имя эмитента - это предметное имя сертификата лица, выдавшего сертификат. Самоподписанные сертификаты являются особым случаем, когда эмитент и субъект являются одинаковыми. Подписывая содержимое сертификата (то есть выдавая сертификат), эмитент утверждает свой контент, в частности, привязку между ключом, личность (субъектом) и различными атрибутами (что может указывать на намерение или объем использования для сертификат).

Кроме того, спецификация PKIX определяет расширение (часть данного сертификата), которое указывает, может ли сертификат использоваться в качестве сертификата ЦС, то есть, может ли он использоваться в качестве эмитента для другого сертификата.

Из этого вы создаете цепочку сертификатов между сертификатом конечного объекта (который является тем, который вы хотите проверить, для пользователя или сервера) и доверенным сертификатом CA. Могут быть промежуточные сертификаты ЦС (выданные другими сертификатами ЦС) между сертификатом конечного объекта вашей службы и доверенным сертификатом ЦС. Вам строго не нужен корневой ЦС наверху (самоподписанный сертификат ЦС), но это часто бывает (вы можете доверять промежуточному сертификату ЦС напрямую, если хотите).

Для вашего случая использования, если вы создаете самозаверяющий сертификат для конкретной службы, имеет ли он флаг CA (расширение основных ограничений), не имеет большого значения. Для этого вам понадобится сертификат CA, чтобы иметь возможность выдавать другие сертификаты (если вы хотите создать свою собственную PKI). Если сертификат, который вы создаете для этой услуги, является сертификатом ЦС, он не должен навредить. Еще важнее то, как вы можете настроить своего клиента на доверие к этому сертификату для этого конкретного сервера (браузеры должны позволить вам сделать явное исключение довольно легко, например). Если механизм конфигурации следует модели PKI (без использования особых исключений), так как нет необходимости строить цепочку (только с одним сертификатом), вы должны иметь возможность импортировать сертификат непосредственно как часть доверенных привязок ваш клиент, будь то сертификат CA или нет (но это может зависеть от механизма настройки клиента).

Ответ 3

У вас всегда должен быть корневой ЦС, у ЦС есть ключ, который можно использовать для подписи сертификата более низкого уровня и корневого сертификата, который может быть встроен в принятые корневые сертификаты на клиенте и используется для проверки нижних сертификатов чтобы проверить, что они действительны. Самостоятельная подписка означает, что вы сами являетесь CA. Всякий раз, когда вы создаете самоподписанный сертификат, вы создаете ca, а затем подписываете сертификат сайта с этим CA.

Ответ 4

Вы можете openssl x509 -noout -text -in $YOUR_CERT видеть различия между содержимым файлов:

В вашем самозаверяющем ЦС вы можете увидеть:

    X509v3 extensions:                                                          
        X509v3 Basic Constraints:
            CA:TRUE, pathlen:0

И в вашем самозаверяющем сертификате это:

    X509v3 extensions:                                                          
        X509v3 Basic Constraints:
            CA:FALSE