Разница между самоподписанным ЦС и самоподписанным сертификатом - PullRequest
64 голосов
/ 26 октября 2010

Мне не ясно, чем отличается ключ CA от сертификата.Разве ключ CA не является просто сертификатом?Позвольте мне попытаться уточнить на примере.

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

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

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

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

Ответы [ 4 ]

58 голосов
/ 26 октября 2010

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

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

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

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

49 голосов
/ 26 октября 2010

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

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

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

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

5 голосов
/ 12 сентября 2017

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

В вашем самозаверяющем центре сертификации вы можете видеть:

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

А в вашем самоподписанном сертификате:это:

    X509v3 extensions:                                                          
        X509v3 Basic Constraints:
            CA:FALSE
1 голос
/ 26 октября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...