...
Инфраструктура открытых ключей (она же - Public Key Infrastructure, PKI) - – комплекс средств, мер и политик, обеспечивающих работу систем на базе алгоритмов шифрования с открытым ключом.
К участникам PKI обычно относятотносятся:
- Удостоверяющий центр (УЦ),
- Регистрационный центр (РЦ),
- Клиент.
В процессе взаимодействия участников PKI появляются и используются следующие объекты:
- Приватный ключ,
- Публичный ключ,
- Запрос на сертификацию,
- Сертификат,
- Список отозванных сертификатов.
Схематично основные процедуры в инфраструктуре открытых ключей можно описать следующим образом:
...
- Клиент генерирует у себя приватный ключ.
- Клиент формирует запрос на сертификацию, включающий в себя публичный ключ, парный к раннее сгенерированному приватному ключу, информацию о владельце приватного ключа и запрашиваемые опции, которые затем могут быть добавлены в выпускаемый сертификат.
- Клиент доставляет запрос на сертификацию в удостоверяющий центр. При наличии в структуре PKI регистрационного центра запрос от клиента будет приходить на него и после валидации будет уходить в удостоверяющий центр.
- Удостоверяющий центр на основании клиентского запроса на сертификацию выпишет сертификат, содержащий всю клиентскую информацию и информацию о самом УЦ. Сам сертификат будет подписан приватным ключом УЦ, тем самым данные в клиентском сертификате не смогут быть изменены третьей стороной. От УЦ сертификат передается клиенту.
- Теперь клиенты могут, используя свой приватный ключ, подписывать данные в рамках используемых процессов (в нашем случае - – сетевых протоколов) при отправке и валидировать данные при помощи публичного сертификата на приёме.
...
Сервисные маршрутизаторы ESR могут принимать участие в структуре PKI в качестве корневого удостоверяющего центра и клиента PKI. Перед развертыванием инфраструктуры PKI крайне важно её спланировать для обеспечения её безопасности и стабильной работы.
Вот основные Основные рекомендации по планированию инфраструктуры открытых ключей:
...
Настройка PKI-сервера в роли корневого удостоверяющего центра
Самый базовый Базовый вариант настройки PKI-сервера –- корневой удостоверяющий центр, работающий на самоподписанных сертификатах, который напрямую обслуживает запросы конечных клиентов.
| Предупреждение |
|---|
Изменение отличительного имени сертификата удостоверяющего центра приводит к перегенерации приватного ключа и сертификата PKI-сервера и очистке базы выписанных сертификатов. В связи с этим рекомендуется Требуется заранее, на этапе планирования структуры PKI, определиться с идентификацией владельца удостоверяющего центра и после ввода удостоверяющего центра в эксплуатацию не менять эти настройки!. |
Алгоритм настройки
| Шаг | Описание | Команда | Ключи |
|---|---|---|---|
| 1 | Настроить NTP-клиент согласно | ||
разделу Алгоритм настойки NTP | |||
. Маршрутизатор должен получать точное время от NTP-сервера или NTP-пира, либо доверять локально настроенному времени с включенным режимом NTP Master. |
| ||
| 2 | Перейти в режим настройки PKI-сервера. | esr(config)# crypto pki server | |
| 3 | Перейти в режим настройки отличительного имени сертификата - набора атрибутов, уникально описывающих удостоверяющий центр. | esr(config-pki-server)# subject-name | |
| 4 | Указать код страны (необязательно). | esr(config-pki-server-subject-name)# country <COUNTRY> | <COUNTRY> – код страны, задаётся строкой длиной 2 символа. Рекомендуется использовать двухбуквенные обозначения стран "alpha-2" из стандарта ISO 3166-1. |
| 5 | Указать название штата, области или провинции (необязательно). | esr(config-pki-server-subject-name)# state <STATE> | <STATE> – название штата, области или провинции, задаётся строкой от 1 до 128 символов. |
| 6 | Указать название населенного пункта или его территориальной единицы (необязательно). | esr(config-pki-server-subject-name)# locality <LOCATION> | <LOCATION> – название населенного пункта или его территориальной единицы, задаётся строкой от 1 до 128 символов. |
| 7 | Указать название организации (необязательно). | esr(config-pki-server-subject-name)# organization <ORGANIZATION> | <ORGANIZATION> – название организации, задаётся строкой от 1 до 64 символов. |
| 8 | Указать подразделение организации (необязательно). | esr(config-pki-server-subject-name)# organization-unit <ORGANIZATION-UNIT> | <ORGANIZATION-UNIT> – название подразделения организации, задаётся строкой от 1 до 64 символов. |
| 9 | Указать общее имя сертификата. | esr(config-pki-server-subject-name)# common-name <COMMON-NAME> | <COMMON-NAME> – общее имя, задаётся строкой от 1 до 64 символов. Чаще всего в качестве общего имени сертификата удостоверяющего ццентра используется имя домена, который обслуживает удостоверяющий центр или юридическое название удостоверяющего центра. |
| 10 | Указать IP-адрес или сетевой интерфейс, который будет будет прослушиваться PKI-сервером для обработки входящих запросов (необязательно). В случае, если настройка не будет указана PKI-сервер будет принимать запросы на всех настроенных IP-интерфейсах маршрутизатора. | esr(config-pki-server)# source-address <ADDR> | <ADDR> – IP-адрес, назначенный на локальном сетевом интерфейсе маршрутизатора, на котором PKI-сервер будет слушать входящие подключения, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
| esr(config-pki-server)# source-interface <IF> | <IF> – интерфейс или туннель, на котором PKI-сервер будет слушать входящие подключения. | ||
| 11 | Указать challenge-password, который будет использован для аутентификации PKI-клиентов, желающих выписать сертификат (необязательно). | esr(config-pki-server)# challenge-password { <CLEAR-TEXT> | encrypted <ENCRYPTED-TEXT> } | <CLEAR-TEXT> – пароль, задаётся строкой от 8 до 32 символов; <ENCRYPTED-TEXT> – зашифрованный пароль размером от 8 байт до 32 байт (от 16 до 64 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...). |
| 12 | Указать время жизни выписываемых клиентам сертификатов в днях. | esr(config-pki-server)# lifetime <DAYS> | <DAYS> – количество дней, принимает значения в диапазоне [1..3650]. Значение по умолчанию: 365. |
| 13 | Включить PKI-сервер. | esr(config-pki-server)# enable |
Пример настройки
Задача:
Настроить на маршрутизаторе PKI-сервер в роли корневого удостоверяющего центра. Клиентские сертификаты должны иметь срок жизни - две недели с момента выпуска.
...
| Примечание |
|---|
Изменение отличительного имени клиентского сертификата или URL подключения к PKI-серверу приводит к немедленному перезапросу нового сертификата у удостоверяющего центра. |
Алгоритм настройки
| Шаг | Описание | Команда | Ключи |
|---|---|---|---|
| 1 | Перейти в режим настройки PKI-клиента. | esr(config)# crypto pki trustpoint <TRUSTPOINT> | <TRUSTPOINT> – имя PKI-клиента, задаётся строкой от 1 до 31 символа. |
| 2 | Перейти в режим настройки отличительного имени сертификата - набора атрибутов, уникально описывающих владельца сертификата. | esr(config-trustpoint)# subject-name | |
| 3 | Указать код страны (необязательно). | esr(config-trustpoint-subject-name)# country <COUNTRY> | <COUNTRY> – код страны, задаётся строкой длиной 2 символа. Рекомендуется использовать двухбуквенные обозначения стран "alpha-2" из стандарта ISO 3166-1. |
| 4 | Указать название штата, области или провинции (необязательно). | esr(config-trustpoint-subject-name)# state <STATE> | <STATE> – название штата, области или провинции, задаётся строкой от 1 до 128 символов. |
| 5 | Указать название населенного пункта или его территориальной единицы (необязательно). | esr(config-trustpoint-subject-name)# locality <LOCATION> | <LOCATION> – название населенного пункта или его территориальной единицы, задаётся строкой от 1 до 128 символов. |
| 6 | Указать название организации (необязательно). | esr(config-server-subject-name)# organization <ORGANIZATION> | <ORGANIZATION> – название организации, задаётся строкой от 1 до 64 символов. |
| 7 | Указать подразделение организации (необязательно). | esr(config-trustpoint-subject-name)# organization-unit <ORGANIZATION-UNIT> | <ORGANIZATION-UNIT> – название подразделения организации, задаётся строкой от 1 до 64 символов. |
| 8 | Указать общее имя сертификата. | esr(config-trustpoint-subject-name)# common-name <COMMON-NAME> | <COMMON-NAME> – общее имя, задаётся строкой от 1 до 64 символов. Чаще всего в качестве общего имени клиентского сертификата используется полное доменное имя хоста, который использует данный клиентский сертификат или ФИО пользователя, использующего клиентский сертификат. |
| 9 | Перейти в режим настройки альтернативных имен сертификата (необязательно). | esr(config-trustpoint)# subject-alt-name | |
| 10 | Указать IP-адрес в качестве альтернативного имени сертификата (необязательно). | esr(config-trustpoint-san)# ipv4 <ADDR> | <ADDR> – IP-адрес, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255]. |
| esr(config-trustpoint-san)# ipv6 <IPV6-ADDR> | <IPV6-ADDR> – IPv6-адрес, задаётся в виде X:X:X:X::X, где каждая часть принимает значения в шестнадцатеричном формате [0..FFFF]. | ||
| 11 | Указать полное доменное имя хоста в качестве альтернативного имени сертификата (необязательно). | esr(config-trustpoint-san)# dns <NAME> | <NAME> – полное доменное имя хоста (FQDN), задается строкой от 1 до 235 символов. Пример записи доменного имени – router.example.loc. |
| 12 | Указать адрес электронной почты в качестве альтернативного имени сертификата (необязательно). | esr(config-trustpoint-san)# email <EMAIL> | <EMAIL> – адрес электронной почты, задается строкой от 6 до 254 символов. Пример записи электронной почты – router@example.loc. |
| 13 | Указать URL для подключения к PKI-серверу. | esr(config-trustpoint)# url <URL> | <URL> – URL для подключения к PKI-серверу, задается в виде "http:// <ADDR>[:<PORT>]/", где:
В случае если PKI-сервер расположен на том же маршрутизаторе, на котором настраивается PKI-клиент необходимо указать в URL любой из IP-интерфейсов, которые слушает PKI-сервер. |
| 14 | Указать цифровой отпечаток сертификата PKI-сервера, к которому выполняется подключение. | esr(config-trustpoint)# fingerprint <FINGERPRINT> | <FINGERPRINT> – значение цифровой отпечаток сертификата, полученного при помощи алгоритма MD5. Имеет размер 16 байт и задается в виде HEX-строки длиной 32 символа без разделителей (YYYY...) или 47 символов с двоеточием в роли разделителя (YY:YY:YY...). |
| 15 | Указать challenge-password, который будет использован для аутентификации на PKI-сервере (необязательно). | esr(config-trustpoint)# challenge-password { <CLEAR-TEXT> | encrypted <ENCRYPTED-TEXT> } | <CLEAR-TEXT> – пароль, задаётся строкой от 8 до 32 символов; <ENCRYPTED-TEXT> – зашифрованный пароль размером от 8 байт до 32 байт (от 16 до 64 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...). |
| 16 | Включить PKI-клиент. | esr(config-trustpoint)# enable |
Пример настройки PKI-клиента для подключения к корневому удостоверяющему центру
...
Алгоритм генерации ключей и запросов на сертификацию
| Шаг | Описание | Команда | Ключи |
|---|---|---|---|
| 1 | Сгенерировать приватный ключ RSA. | esr# crypto generate private-key rsa <KEY-SIZE> filename <NAME>
| <KEY-SIZE> – размер ключа в битах. Значение может находится в диапазоне от 1024 до 4096; <NAME> – имя файла приватного ключа, задаётся строкой до 31 символа. |
| 2 | Сформировать запрос на сертификацию. | esr# crypto generate csr private-key <PRIVATE-KEY> [[alternative-name <ALT-NAME>][common-name <COMMON-NAME>][country <COUNTRY>][email-address <E-MAIL>][locality <LOCATION>][organization <ORGANIZATION>][organizational-unit <ORGANIZATION-UNIT>][state <STATE>]] filename <NAME>
| <PRIVATE-KEY> – имя файла приватного ключа, задаётся строкой до 31 символа; <ALT-NAME> – альтернативное имя сертификата, задаётся строкой от 5 до 255 символов в формате <TYPE>:<VALUE>, где:
<COMMON-NAME> – общее имя, задаётся строкой от 1 до 64 символов. Чаще всего в качестве общего имени клиентского сертификата используется полное доменное имя хоста, который использует данный клиентский сертификат или ФИО пользователя, использующего клиентский сертификат; <COUNTRY> – код страны, задаётся строкой длиной 2 символа. Рекомендуется использовать двухбуквенные обозначения стран "alpha-2" из стандарта ISO 3166-1; <E-MAIL> – адрес электронной почты, задаётся строкой от 3 до 64 символов; <LOCATION> – название населенного пункта или его территориальной единицы, задаётся строкой от 1 до 128 символов; <ORGANIZATION> – название организации, задаётся строкой от 1 до 64 символов; <ORGANIZATION-UNIT> – название подразделения организации, задаётся строкой от 1 до 64 символов; <STATE> – название штата, области или провинции, задаётся строкой от 1 до 128 символов; <NAME> – имя файла запроса на сертификацию, задаётся строкой до 31 символа. |
| 3 | Выгрузить запрос на сертификацию с устройства. | esr# copy crypto:csr/<CERT-REQ> <DESTINATION> | <CERT-REQ> – имя файла запроса на сертификацию, задаётся строкой до 31 символа; <DESTINATION> – локальное или удаленное файловое хранилище, куда будет выгружен запрос на сертификацию. Полный список возможных вариантов и синтаксис их описания подробно указан в описании команды "copy" в справочнике команд CLI. |
| 4 | Загрузить на устройство клиентский сертификат, выписанный удостоверяющим центром. | esr# copy <SOURCE> crypto:cert/<CERT> | <SOURCE> – локальное или удаленное файловое хранилище, откуда будет загружен файл клиентского сертификата. Полный список возможных вариантов и синтаксис их описания подробно указан в описании команды "copy" в справочнике команд CLI; <CERT> – имя файла клиентского сертификата, задаётся строкой до 31 символа. |
| 5 | Загрузить на устройство сертификат удостоверяющего центра. | esr# copy <SOURCE> crypto:cert/<CA-CERT> | <SOURCE> – локальное или удаленное файловое хранилище, откуда будет загружен файл сертификата удостоверяющего центра. Полный список возможных вариантов и синтаксис их описания подробно указан в описании команды "copy" в справочнике команд CLI; <CA-CERT> – имя файла сертификата удостоверяющего центра, задаётся строкой до 31 символа. |
| 6 | Загрузить на устройство список отозванных сертификатов удостоверяющего центра. | esr# copy <SOURCE> crypto:crl/<CRL> | <SOURCE> – локальное или удаленное файловое хранилище, откуда будет загружен файл со списком отозванных сертификатов. Полный список возможных вариантов и синтаксис их описания подробно указан в описании команды "copy" в справочнике команд CLI; <CRL> – имя файла со списком отозванных сертификатов, задаётся строкой до 31 символа. |
Пример ручного выпуска сертификата через внешний удостоверяющий центр
...