выдача самозаверяющего сертификата - PullRequest
0 голосов
/ 15 марта 2009

Я делаю самоподписывающий сертификат в моей тестовой среде. Вот больше деталей о том, что я делаю.

http://www.hanselman.com/blog/SigningPowerShellScripts.aspx

Мои краткие шаги (цель состоит в том, чтобы установить доверительное соединение между компьютером C и компьютером A на основе сертификата),

  1. Сделать компьютер A корневым центром сертификации с помощью makecert.exe;
  2. Самоподписать сертификат B, выданный компьютером A в качестве корневого CA;
  3. Установить сертификат B на компьютере A в качестве сертификата, используемого для связи;
  4. Установить / доверять корневой CA (компьютер A) на компьютер C;
  5. Тогда компьютер C будет доверять связи компьютера A, используя сертификат B.

Моя путаница в том, что компьютер C доверяет компьютеру A без установки сертификата B? Я думаю, что и сертификат корневого CA и сертификат другой стороны должны быть установлены. Любые комментарии или идеи?

спасибо заранее, George

Ответы [ 3 ]

2 голосов
/ 15 марта 2009

У вас неверный шаг 2, по крайней мере, семантически. Если вы генерируете сертификат, подписанный ЦС, тогда он вовсе не самоподписан, а подписан ЦС.

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

Однако вы говорите, что используете это для связи - имейте в виду, что если вы используете что-то вроде WCF, который проверит на отзыв, вам придется отключить это, так как ваш сгенерированный CA не будет поддерживать это.

1 голос
/ 15 марта 2009

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

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

Затем можно создать «дочерние» сертификаты - подписанные корневым сертификатом - и целевая система примет дочерний сертификат как действительный, поскольку он был подписан доверенным корневым сертификатом.

Сертификат - это просто способ проверки чьего-либо открытого ключа. Сертификат содержит как ваш открытый ключ в виде простого текста, так и ваш открытый ключ, зашифрованный личным ключом подписавшего. Чтобы проверить открытый ключ, опубликованный в сертификате, вы расшифровываете зашифрованную версию открытого ключа - используя открытый ключ подписавшего - и проверяете, совпадает ли она с версией открытого текста открытого ключа.

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

Промежуточные сертификаты также могут использоваться для подписи других сертификатов. Таким образом, сертификаты можно использовать для построения «цепочки доверия» обратно к некоторому (по крайней мере, теоретически) доверенному корневому сертификату.

Брюс Шнайер имеет разумное описание этого в своей книге «Прикладная криптография». А у Питера Гутмана более красочное описание сертификатов по этой ссылке:

http://www.cs.auckland.ac.nz/~pgut001/pubs/pkitutorial.pdf

1 голос
/ 15 марта 2009

Компьютер C должен доверять корневому CA (на компьютере A). Затем любые сертификаты, представленные с другого компьютера (скажем, компьютера D), выданные тем же корневым центром сертификации, будут автоматически доверены.

Например, в Windows у вас (по умолчанию) уже есть и доверен сертификат корневого CA для Verisign. Когда вы переходите на сайт HTTPS, который использует сертификат Verisign, вы автоматически доверяете ему - поскольку вы доверяете Verisign, и Verisign выдал сертификат для сайта HTTPS.

IOW - вам нужно только доверять ЦС и установить его сертификат.

...