2012-04-12 2 views
2

В чем разница между ssl certfile и ssl cacertfile?ssl cacertfile generation

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

Учитывая, что я генерировать первый с

openssl x509 -req -days 30 -in request.pem -signkey key.pem -out certificate.pem 

Как я могу генерировать второй?

ответ

4

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

Во-первых - что такое сертификат? Сертификат является подписанным документом. Это как конверт. Когда вы получаете почту из своей почтовой службы, которая не открыта, вы верите, что отправитель, написанный на конверте, является тем, который помещает все, что в нем, - он запечатан. Скажем, кто-то отправляет вам номер 15728 в конверте и говорит: «Хорошо, это мой номер. Всякий раз, когда кто-то дает вам что-то и представляет этот номер, знайте, что это я».

Это упрощение подписи - например, в случае X.509 вы подписываете что-то вроде «Меня зовут ABC, и моя организация называется DEF, и она основана на GHI страны», эффективно шифруя это и предоставляя ему «число», которое вряд ли может быть создано кем-либо еще в мире. Трудно получить тот же документ, если у вас нет закрытого ключа, поэтому этот сертификат, если он представлен, может быть использован для определения того, что любой другой документ принадлежит тому, у кого есть этот закрытый ключ. Точно так же, как ваш друг отправил вас - любой может отправить вам 15728, но вряд ли они угадают этот номер из всех других возможностей.

Я попытаюсь объяснить, что происходит с сертификатами CA/end-pint. Во-первых, основной предпосылкой является доверие. Скажите, что у вас много людей (я помечаю их буквами A, B, C, ...). Скажите, что они знают и доверяют друг другу, как это:

  • < -> B
  • B < -> C
  • D < -> E

Скажем, человек А должен купить автомобиль. Скажем, у каждого человека C и E есть автомобиль каждый. Обычно, скорее всего, B скажет A: «Эй, мой друг C имеет машину, которую вы просто ищете», и A купит этот автомобиль на основе доверия (это хорошая машина). Менее вероятно, что в этой ситуации он будет покупать автомобиль у E, поскольку E не доверяется. Однако D может быть более охотно покупать автомобиль у E, поскольку они знают и доверяют друг другу.

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

У CA есть так называемый «корневой сертификат» или «промежуточный сертификат». Корневые сертификаты устанавливаются, например. в хранилищах сертификатов вашей операционной системы или браузера и по своей сути им доверяют. Другим сертификатам по дороге доверяют средства цепочки. То есть, если CA A выдал сертификат CA B, тогда CA B имеет этот «промежуточный сертификат», который он может использовать для подписи большего количества (промежуточных или конечных) сертификатов.Например, это может быть, как это:

  • СА А имеет корневой сертификат R
  • СА выдает промежуточный сертификат X для CA B
  • СА Б выдает промежуточный сертификат Y для CA C
  • CA C выдает сертификат Z вам

Теперь вы можете, с помощью средств цепочки, в основном говорят, что это кому-либо в мире, который доверяет CA A (т.е. это корневой сертификат R):

  • ОК, у меня есть этот сертификат Z. Это показывает, что CA C доверяет мне.
  • В свою очередь, CA C имеет сертификат Y, который показывает, что CA B доверяет ему.
  • CA B в свою очередь, имеет сертификат X, который показывает, что CA А доверяет это
  • Вы доверяете CA A, так что нет никаких оснований не доверять мне

Вы можете прочитать об этом здесь:

Вот как вы можете создать их с помощью openssl: