Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

Версия 1 Следующий »

Автоматическое распространение ключей и сертификатов X.509

Общее описание инфраструктуры открытых ключей

Инфраструктура открытых ключей (она же - Public Key Infrastructure, PKI) - комплекс средств, мер и политик, обеспечивающих работу систем на базе алгоритмов шифрования с открытым ключом.

К участникам PKI обычно относят:

  • Удостоверяющий центр (УЦ)
  • Регистрационный центр (РЦ)
  • Клиент

В процессе взаимодействия участников PKI появляются и используются следующие объекты:

  • Приватный ключ
  • Публичный ключ
  • Запрос на сертификацию
  • Сертификат
  • Список отозванных сертификатов

Схематично основные процедуры в инфраструктуре открытых ключей можно описать следующим образом:

  1. Клиент генерирует у себя приватный ключ.
  2. Клиент формирует запрос на сертификацию, включающий в себя публичный ключ, парный к раннее сгенерированному приватному ключу, информацию о владельце приватного ключа и запрашиваемые опции, которые затем могут быть добавлены в выпускаемый сертификат.
  3. Клиент доставляет запрос на сертификацию в удостоверяющий центр. При наличии в структуре PKI регистрационного центра запрос от клиента будет приходить на него и после валидации будет уходить в удостоверяющий центр.
  4. Удостоверяющий центр на основании клиентского запроса на сертификацию выпишет сертификат, содержащий всю клиентскую информацию и информацию о самом УЦ. Сам сертификат будет подписан приватным ключом УЦ, тем самым данные в клиентском сертификате не смогут быть изменены третьей стороной. От УЦ сертификат передается клиенту.
  5. Теперь клиенты могут, используя свой приватный ключ, подписывать данные в рамках используемых процессов (в нашем случае - сетевых протоколов) при отправке и валидировать данные при помощи публичного сертификата на приёме.

Планирование инфраструктуры открытых ключей

Сервисные маршрутизаторы ESR могут принимать участие в структуре PKI в качестве корневого удостоверяющего центра и клиента PKI. Перед развертыванием инфраструктуры PKI крайне важно её спланировать для обеспечения её безопасности и стабильной работы.

Вот основные рекомендации по планированию инфраструктуры открытых ключей:

  1. Определите роли устройств в структуре PKI.
  2. Определите схему именования сертификатов.
  3. Определите политику доступа к центру сертификации и механизмы ограничения доступа к нему от недоверенных клиентов.
  4. Обеспечьте актуальность времени на всех хостах, используемых в структуре 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-сервер в роли корневого удостоверяющего центра. Клиентские сертификаты должны иметь срок жизни - две недели с момента выпуска.

В качестве начальной конфигурации на маршрутизаторе уже настроен сетевой интерфейс в сторону интернет-провайдера, прописан шлюз по умолчанию и настроена зона безопасности. Шлюз интернет-провайдера также может служить источником синхронизации времени по протоколу NTP.

hostname ESR.CA

security zone WAN
exit

interface gigabitethernet 1/0/1.103
  security-zone WAN
  ip address 10.0.103.2/30
exit

ip route 0.0.0.0/0 10.0.103.1
Решение:

Настроим NTP-клиент на получение точного времени от шлюза интернет-провайдера:

ESR.CA(config)# ntp enable
ESR.CA(config)# ntp server 10.0.103.1
ESR.CA(config-ntp-server)# exit
ESR.CA(config)#

Перейдем к настройке PKI-сервера:

ESR.CA(config)# crypto pki server 
ESR.CA(config-pki-server)#

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

ESR.CA(config-pki-server)# subject-name 
ESR.CA(config-pki-server-subject-name)# country RU
ESR.CA(config-pki-server-subject-name)# state Moscow
ESR.CA(config-pki-server-subject-name)# locality Moscow
ESR.CA(config-pki-server-subject-name)# organization Company
ESR.CA(config-pki-server-subject-name)# common-name ca.company.loc
ESR.CA(config-pki-server-subject-name)# exit
ESR.CA(config-pki-server)#

Привяжем PKI-сервер к адресу сетевого интерфейса, смотрящего в сторону интернет-провайдера:

ESR.CA(config-pki-server)# source-interface gi 1/0/1.103
ESR.CA(config-pki-server)#

Зададим challenge-password, для корректного обращения к удостоверяющему центру PKI-клиенты должны использовать правильный challenge-password.

ESR.CA(config-pki-server)# challenge-password StR0nnGP+ss
ESR.CA(config-pki-server)#

Зададим время жизни выписываемых клиентам сертификатов:

ESR.CA(config-pki-server)# lifetime 14
ESR.CA(config-pki-server)#

Включим PKI-сервер:

ESR.CA(config-pki-server)# enable 
ESR.CA(config-pki-server)# exit
ESR.CA(config)# 

Добавим пару зон безопасности и правило, разрешающее прохождение входящего на PKI-сервер трафика:

ESR.CA(config)# security zone-pair WAN self 
ESR.CA(config-security-zone-pair)# rule 10
ESR.CA(config-security-zone-pair-rule)# description "Allow access to PKI-server from WAN"
ESR.CA(config-security-zone-pair-rule)# match protocol tcp
ESR.CA(config-security-zone-pair-rule)# match destination-port port-range 80
ESR.CA(config-security-zone-pair-rule)# match destination-address address-range 10.0.103.2
ESR.CA(config-security-zone-pair-rule)# action permit 
ESR.CA(config-security-zone-pair-rule)# enable 
ESR.CA(config-security-zone-pair-rule)# exit
ESR.CA(config-security-zone-pair)# exit
ESR.CA(config)# 

Применим конфигурацию на маршрутизаторе:

ESR.CA(config)# end
Warning: you have uncommitted configuration changes.
ESR.CA# commit 
Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds.
ESR.CA# confirm
Configuration has been confirmed. Commit timer canceled.
ESR.CA# 

В результате получим запущенный корневой удостоверяющий центр, готовый к обслуживанию клиентских запросов. В команде "show crypto pki server" можно увидеть fingerprint сертификата удостоверяющего центра, который необходимо использовать в клиентах PKI совместно с установленным challenge-password для корректной авторизации:

ESR.CA# show crypto pki server
Status:                    Enabled
Lifetime days:             14
Certificate fingerprint:   79:D2:B6:7E:DF:77:2D:C5:27:68:99:10:BA:EC:D2:47
Source:                    gigabitethernet 1/0/1.103
Last issued serial number: --
Challenge password:        Active
ESR.CA#

Настройка 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>]/", где:

  • <ADDR> – IP-адрес или доменное имя PKI-сервера;
  • <PORT> – порт, на котором запущен PKI-сервер, в случае если используется 80 порт по умолчанию, то настройку можно пропустить.

В случае если PKI-сервер расположен на том же маршрутизаторе, на котором настраивается PKI-клиент необходимо указать в URL любой из IP-интерфейсов, которые слушает PKI-сервер.

14Указать цифровой отпечаток сертификата PKI-сервера, к которому выполняется подключение.esr(config-trustpoint)# fingerprint <FINGERPRINT>

<FINGERPRINT> – значение цифровой отпечаток сертификата, полученного при помощи алгоритма MD5. Имеет размер 16 байт и задается в виде строки длиной 32 символа в шестнадцатеричном формате (0xYYYY...) или (YYYY...).

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-клиента для подключения к корневому удостоверяющему центру

Задача:

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

В качестве начальной конфигурации на маршрутизаторе уже настроен сетевой интерфейс в сторону интернет-провайдера, прописан шлюз по умолчанию и настроена зона безопасности. Шлюз интернет-провайдера также может служить источником синхронизации времени по протоколу NTP.

hostname ESR.CA

security zone WAN
exit

interface gigabitethernet 1/0/1.103
  security-zone WAN
  ip address 10.0.103.2/30
exit

security zone-pair WAN self
  rule 10
    description "Allow access to PKI-server from WAN"
    action permit
    match protocol tcp
    match destination-address address-range 10.0.103.2
    match destination-port port-range 80
    enable
  exit
exit

ip route 0.0.0.0/0 10.0.103.1

ntp enable
ntp server 10.0.103.1
exit

crypto pki server
  challenge-password StR0nnGPass
  subject-name
    common-name ca.company.loc
    organization Company
    locality Moscow
    state Moscow
    country RU
  exit
  lifetime 14
  source-interface gigabitethernet 1/0/1.103
  enable
exit
hostname ESR.R1

security zone WAN
exit

interface gigabitethernet 1/0/1.113
  security-zone WAN
  ip address 10.0.113.2/30
exit

ip route 0.0.0.0/0 10.0.113.1
Решение:

Настроим NTP-клиент на получение точного времени от шлюза интернет-провайдера:

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


ESR.R1(config)# ntp enable
ESR.R1(config)# ntp server 10.0.113.1
ESR.R1(config-ntp-server)# exit
ESR.R1(config)#

Перейдем к настройке PKI-клиента:

ESR.R1(config)# crypto pki trustpoint TP_R1
ESR.R1(config-trustpoint)#

Перейдем в раздел настройки отличительного имени клиентского сертификата. Настроим те атрибуты, которые позволят однозначно идентифицировать клиента:

ESR.R1(config-trustpoint)# subject-name 
ESR.R1(config-trustpoint-subject-name)# country RU
ESR.R1(config-trustpoint-subject-name)# state Moscow
ESR.R1(config-trustpoint-subject-name)# locality Moscow
ESR.R1(config-trustpoint-subject-name)# organization Company
ESR.R1(config-trustpoint-subject-name)# common-name r1.company.loc
ESR.R1(config-trustpoint-subject-name)# exit
ESR.R1(config-trustpoint)#

Перейдем в раздел настройки альтернативных имен сертификата. Укажем в качестве альтернативных имен IP-адрес и полное доменное имя:

ESR.R1(config-trustpoint)# subject-alt-name 
ESR.R1(config-trustpoint-san)# ipv4 10.0.113.2
ESR.R1(config-trustpoint-san)# dns r1.company.loc
ESR.R1(config-trustpoint-san)# exit
ESR.R1(config-trustpoint)#

Укажем URL подключения к удостоверяющему центру:

ESR.R1(config-trustpoint)# url http://10.0.103.2/
ESR.R1(config-trustpoint)#

Укажем цифровой отпечаток сертификата удостоверяющего центра, при несовпадении настроенного в конфигурации PKI-клиента отпечатка с отпечатком сертификата, которым представится сам удостоверяющий центр процесс выпуска сертификата будет прерван. На сервисных маршрутизаторах ESR получить цифровой отпечаток сертификата удостоверяющего центра можно из вывода команды "show crypto pki server":

ESR.R1(config-trustpoint)# fingerprint 79:D2:B6:7E:DF:77:2D:C5:27:68:99:10:BA:EC:D2:47
ESR.R1(config-trustpoint)#

Зададим challenge-password, для корректного обращения к удостоверяющему центру:

ESR.R1(config-trustpoint)# challenge-password StR0nnGP+ss
ESR.R1(config-trustpoint)#

Включим PKI-клиент:

ESR.R1(config-trustpoint)# enable 
ESR.R1(config-trustpoint)# exit
ESR.R1(config)#

Поскольку трафик PKI-клиента исходящий - дополнительных правил фильтрации в Zone-Based Firewall добавлять не требуется.

Применим конфигурацию на маршрутизаторе:

ESR.R1(config)# end
Warning: you have uncommitted configuration changes.
ESR.R1# commit 
Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds.
ESR.R1# confirm
Configuration has been confirmed. Commit timer canceled.
ESR.R1#

В результате получим настроенный PKI-клиент, который сразу после запуска обратится к удостоверяющему центру за выпуском сертификата. Отследить состояние настроенных PKI-клиентов можно командой "show crypto pki trustpoints":

ESR.R1# show crypto pki trustpoints
Name              Enrollment   Subject name                     Status            Next action            
---------------   ----------   ------------------------------   ---------------   --------------------   
TP_R1             SCEP         /CN=r1.company.loc/O=Company/L   Ready             2025-11-02 11:35:39    
                               =Moscow/ST=Moscow/C=RU                                                    

ESR.R1#

Более подробную информацию о PKI-клиенте можно посмотреть, если выполнить команду "show crypto pki trustpoint" с указанием имени PKI-клиента:

ESR.R1# show crypto pki trustpoint TP_R1 
Name:               TP_R1
Enrollment:         SCEP
Subject name:       /CN=r1.company.loc/O=Company/L=Moscow/ST=Moscow/C=RU
Challenge password: Active
Status:             Ready
Renew date:         2025-11-02 11:35:39
ESR.R1#

Процесс автоматического перевыпуска сертификата PKI-клиента

При успешном получении сертификата от удостоверяющего центра PKI-клиент вычитывает период действия сертификата и за 20% времени до его истечения планирует процедуру перевыпуска нового сертификата. Дата запланированного перевыпуска сертификата соответствующего PKI-клиента присутствует в графе "Renew date" вывода команды "show crypto pki trustpoint" с указанием имени конкретного PKI-клиента:

ESR.R1# show crypto pki trustpoint TP_R1 
Name:               TP_R1
Enrollment:         SCEP
Subject name:       /CN=r1.company.loc/O=Company/L=Moscow/ST=Moscow/C=RU
Challenge password: Active
Status:             Ready
Renew date:         2025-11-02 11:35:39
ESR.R1# 

При наступлении этого времени PKI-клиент запустит процедуру перевыпуска сертификата и в случае успеха заменит текущий сертификат на новый. На это укажет как факт смены запланированной даты перевыпуска сертификата, так и новый серийный номер сертификата:

ESR.R1# show crypto pki trustpoint TP_R1 cert | include "Serial"
Serial:                                           04:7E:C0:EF:F7:D0:46:53:AF:9D:C8:EE:17:A6:14:CC
ESR.R1# show crypto pki trustpoint TP_R1
Name:               TP_R1
Enrollment:         SCEP
Subject name:       /CN=r1.company.loc/O=Company/L=Moscow/ST=Moscow/C=RU
Challenge password: Active
Status:             Ready
Renew date:         2025-11-02 11:35:39
ESR.R1#
ESR.R1# show date
"2025-11-02 11:35:46"
ESR.R1# show crypto pki trustpoint TP_R1
Name:               TP_R1
Enrollment:         SCEP
Subject name:       /CN=r1.company.loc/O=Company/L=Moscow/ST=Moscow/C=RU
Challenge password: Active
Status:             Ready
Renew date:         2025-11-13 18:21:11
ESR.R1# show crypto pki trustpoint TP_R1 cert | include "Serial"
Serial:                                           10:34:38:55:CE:D1:4A:98:A5:0E:3F:9E:32:77:E7:22
ESR.R1# 

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

ESR.CA# show crypto pki server database 
Serial                                            State       Issue date   Expiration   Revocation   Subject name                     
                                                                           date         date                                          
-----------------------------------------------   ---------   ----------   ----------   ----------   ------------------------------   
04:7E:C0:EF:F7:D0:46:53:AF:9D:C8:EE:17:A6:14:CC   Revoked     2025-10-22   2025-11-05   2025-11-02   /CN=r1.company.loc/O=Company/L   
                                                              06:47:39     06:47:39     11:36:01     =Moscow/ST=Moscow/C=RU           

10:34:38:55:CE:D1:4A:98:A5:0E:3F:9E:32:77:E7:22   Valid       2025-11-02   2025-11-16   --           /CN=r1.company.loc/O=Company/L   
                                                              11:36:01     08:02:34                  =Moscow/ST=Moscow/C=RU           

ESR.CA#

Процесс автоматического перевыпуска сертификата PKI-сервера

В текущей версии ПО маршрутизаторов ESR автоматический перевыпуск сертификата PKI-сервера не реализован. Самоподписанный сертификат удостоверяющего центра генерируется на этапе настройки PKI-сервера сроком на 10 лет с момента генерации. Поддержка перевыпуска сертификата удостоверяющего центра будет поддержана в одном из следующих релизов. 

Ручная генерация и распространение ключей и сертификатов X.509

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

Алгоритм генерации ключей и запросов на сертификацию

ШагОписаниеКомандаКлючи
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>, где:

  • <TYPE> – спецификатор типа альтернативного имени, может принимать значения "IP" и "DNS".
  • <VALUE> – значение альтернативного имени сертификата, может принимать на сход корректно написанный IPv4 адрес или доменное имя.

 <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 символа.

Пример ручного выпуска сертификата через внешний удостоверяющий центр

Задача:

Сгенерировать на ESR приватный RSA ключ и сформировать запрос на сертификацию. Помимо настройки отличительного имени сертификата настроим в качестве альтернативного имени его полное доменное имя.

Решение:

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

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

Сгенерируем приватный ключ RSA:

При генерации ключей RSA рекомендуется использовать ключи длиной 2048 бит и более.


ESR.R1# crypto generate private-key rsa 2048 filename r1.company.loc.key
.....+.......+..+..........+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*......+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*...+.........+..+.+...+.........+..+...+......+....+...+........+
.......+........+.+......+.........+........................+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
............+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.......+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+.+...+......+.....+......+.......+......+......+.....+...+...............+.+.....
.+.....+.+.....+...+.......+.....+...+....+...+..+............+......+....+........+.+..+............+.+...........+..................+...+....+...........+.........+....+..+.......+......+......+........+...........................+.....
........+...+.........+.....+.+...+............+..+..........+..+...+.+..+...+................+.....+.+........+.+.....+....+...........+...+...+...+.......+........+..........+..+.........+...+...+...+.+...+......+......+......+...+.....
.........+.+.....+.+...+..+...+.......+......+............+......+.........+.....+.+............+.....+....+...+...+.................+...+.......+..+.+............+..+.+...+.....+....+...............+...........+....+...+.................
+.+...........+...+.+.....+.+...+...........+..........+.....+.........+...+....+..............+.+........+...+....+......+........+.+......+..+.+....................+....+......+..+...+................+...+........+.......+...........+.+
......+..+.+......+.....+...+......+.......+........+.+......+........+......+.+...+...........................+........+.+...+...........+.+.....+.+.........+...+.....+.......+.....+......+...+......+.....................+..........+..+.
.....+......+.+..............+.+.....+....+...+...........+......+....+.....+....+...+...+..+............+.+.................+...+.+..............+............+.........+......+....+......+...+.........+..+.+..+.+..+......................
+........+.......+..+....+......+......+..+...+..........+...........................+............+.....+...+.+.....+....+...+.....+....+...+...........+......+.+...+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ESR.R1# 

Сформируем запрос на сертификацию:

ESR.R1# crypto generate csr private-key r1.company.loc.key country RU state Moscow locality Moscow organization Company common-name r1.company.loc email-address netmaster@company.loc alternative-name DNS:r1.company.loc filename r1.company.loc.csr
ESR.R1#

Выгрузим сформированный запрос на сертификацию на внешний TFTP-сервер для дальнейшей доставки в удостоверяющий центр:

ESR.R1# copy crypto:csr/r1.company.loc.csr tftp://10.0.113.1:/r1.company.loc.csr
|******************************************| 100% (1094B) Success!
ESR.R1#

Процесс доставки запроса на сертификацию в удостоверяющий центр и непосредственно сам выпуск сертификата индивидуален для каждого удостоверяющего центра и не рассматривается в данном разделе руководства.

После успешного выпуска сертификата удостоверяющим центром загрузим клиентский сертификат, сертификат удостоверяющего центра и список отозванных сертификатов на маршрутизатор:

ESR.R1# copy tftp://10.0.113.1:/ca.crt crypto:cert/ca.crt
|******************************************| 100% (2264B) Crypto file loaded successfully!
ESR.R1# copy tftp://10.0.113.1:/ca.crl crypto:crl/ca.crl
|******************************************| 100% (1064B) Crypto file loaded successfully!  
ESR.R1# copy tftp://10.0.113.1:/r1.company.loc.crt crypto:cert/r1.company.loc.crt 
|******************************************| 100% (1931B) Crypto file loaded successfully!  
ESR.R1#

Посмотреть итоговое содержимое сертификата можно командой "show crypto certificates":

ESR.R1# show crypto certificates cert r1.company.loc.crt 
Version:                                          3
Serial:                                           4096
Subject name:
    C(countryName):                               RU
    ST(stateOrProvinceName):                      Moscow
    O(organizationName):                          Company
    CN(commonName):                               r1.company.loc
    emailAddress(emailAddress):                   netmaster@company.loc
Issuer name:
    C(countryName):                               RU
    ST(stateOrProvinceName):                      Moscow
    L(localityName):                              Moscow
    O(organizationName):                          Company
    CN(commonName):                               Company Root Certificate Authority
Validity period:
    Valid after:                                  2025-10-28 03:26:41
    Invalid after:                                2025-11-27 03:26:41
Signature:
    Algorithm:                                    sha256WithRSAEncryption
    Value:                                        37:6D:30:DE:C3:EF:D8:06:D6:4B:AA:AC:6A:78:65:C2:7C:7B:
                                                  EA:E9:F6:C0:A7:0F:9B:01:D2:C6:05:95:43:A1:C6:7B:F7:43:
                                                  F7:BE:78:7F:BA:65:73:88:31:91:C5:4F:FA:BF:41:99:D6:28:
                                                  A5:29:72:85:20:52:2E:0C:1D:3E:37:78:10:B5:CC:AE:D5:A9:
                                                  A6:79:FE:07:F4:93:E2:E9:F4:48:17:E5:A6:EB:36:D9:3E:41:
                                                  2E:8D:E9:7A:D4:75:49:A5:98:8F:76:73:8A:A7:E6:1D:89:CA:
                                                  46:B2:FC:A6:E7:96:F3:79:EB:5A:B1:B0:63:E4:AC:7C:D9:29:
                                                  AE:2D:04:4E:45:B0:08:38:7F:C6:62:72:04:C6:A2:7C:BC:77:
                                                  AF:CE:92:2F:66:75:33:8B:81:AB:98:40:61:74:9C:6B:10:15:
                                                  78:A7:58:02:DA:D1:69:C2:C2:8B:DA:66:18:BD:13:FB:4F:7D:
                                                  35:35:C3:21:6F:0A:A0:53:ED:56:F8:B9:E9:0E:6F:6D:DD:E1:
                                                  A0:AD:4A:07:97:AE:79:3C:2F:7C:E6:76:DD:9F:37:50:EB:AD:
                                                  56:3D:BA:51:D0:C1:15:25:54:F6:E2:1D:12:39:46:5F:E3:33:
                                                  1E:49:26:04:E0:23:FB:C5:FA:A8:0D:B7:16:23:C5:C9:3E:0C:
                                                  85:E2:CE:72:B5:97:0D:3D:15:D6:5D:F7:12:78:9C:84:D2:21:
                                                  C8:EC:BE:45:90:A5:CB:38:87:AB:8C:04:4B:BA:42:2B:40:95:
                                                  94:BE:F9:82:80:44:76:79:ED:42:5A:ED:28:07:E4:16:6D:C8:
                                                  80:D4:33:87:97:39:20:E9:CC:EB:F3:74:CE:F2:3C:6E:4E:C8:
                                                  37:51:21:F8:CA:AD:C6:09:3B:19:07:B2:34:3C:17:31:B8:22:
                                                  CC:BA:73:5E:9F:CD:F4:8B:38:71:BB:2F:7A:A5:F5:43:A8:8E:
                                                  07:47:36:BA:8D:BA:DB:BB:8F:9C:EB:49:A4:6C:2E:30:30:C1:
                                                  AF:06:F1:0D:E6:C7:DA:7B:FD:94:68:FD:F0:B3:3F:30:45:8C:
                                                  ED:77:FE:09:64:0E:4D:02:03:82:3A:30:61:24:08:4A:AF:BD:
                                                  C2:32:6B:70:78:E6:C1:F2:6E:2A:3E:30:1A:7A:A2:BE:70:7F:
                                                  86:8A:9B:12:D0:92:7D:14:99:72:FA:30:29:BE:44:8F:3C:D8:
                                                  75:16:AE:BD:23:97:E0:04:B5:8A:B9:71:F0:F7:15:0A:A8:95:
                                                  CC:51:23:21:6E:3F:9B:64:B1:73:A7:2F:03:22:46:6F:DD:A2:
                                                  90:A1:E4:7F:94:92:7F:E7:C2:C5:B9:F9:9D:D3:19:CF:34:3D:
                                                  D0:C0:E0:30:F8:77:1A:E8
Public key info:
    Algorithm:                                    RSA
    Key size:                                     2048
    Exponent:                                     65537
    Modulus:                                      00:9D:41:BB:13:A8:99:9C:3E:E7:2C:0E:A5:B6:A8:CA:22:64:
                                                  BB:B9:77:E5:CE:DE:5E:71:83:9A:90:22:D1:32:E1:66:45:FC:
                                                  6C:53:DA:65:D5:FF:C7:35:2C:24:F6:BA:AD:72:DD:27:A5:09:
                                                  30:CC:AA:E3:F8:33:B5:10:1C:23:D9:EA:DA:30:6F:E4:2C:C4:
                                                  EC:08:E9:12:72:05:0C:C1:CF:6B:72:8F:B5:E8:5B:90:67:B1:
                                                  4C:59:D3:4D:CA:0C:73:94:47:F7:DB:BC:83:38:24:E2:AC:19:
                                                  DF:7D:8F:99:E0:B2:72:E3:A3:5B:7E:B8:EC:7B:6C:17:8C:48:
                                                  5A:F2:F5:A5:14:D3:07:E3:7E:5A:CD:70:6A:9E:38:2D:80:4F:
                                                  29:B3:60:F8:AC:7B:C5:09:09:B9:4B:92:D4:E0:44:5D:9E:1A:
                                                  AF:0E:25:FA:E5:73:C3:51:8F:DE:BB:F5:71:0C:2F:F3:AC:F5:
                                                  7D:79:8A:E6:87:0A:05:6A:D8:C8:6D:FE:BE:90:7D:B5:A2:3D:
                                                  3B:75:96:CF:25:98:5C:0B:F2:E3:C1:E7:B5:30:58:27:13:64:
                                                  DD:DB:77:A8:10:9C:A5:25:AC:85:DA:30:21:87:71:A8:D7:D8:
                                                  BC:60:40:C7:53:54:01:03:0E:60:5D:2B:43:99:97:F2:26:6E:
                                                  8F:F7:47:CF:9F
X509v3 Basic Constraints:
    CA:                                           No
    Critical:                                     Yes
X509v3 Subject key identifier:
    ID:                                           40:6D:58:0E:0A:4C:CD:89:71:CA:DB:D2:BC:AD:FA:27:C9:1E:
                                                  4D:D8
    Critical:                                     No
X509v3 Authority key identifier:
    ID:                                           7C:E6:3C:E3:FB:76:C5:18:B3:21:52:9D:8F:71:29:28:55:CA:
                                                  96:63
    Critical:                                     No
X509v3 Key Usage:
    Usage:                                        Digital Signature
                                                  Non Repudiation
    Critical:                                     Yes
X509v3 Subject Alternative Name:
    Names:                                        DNS:r1.company.loc
    Critical:                                     No
ESR.R1#

Как можно заметить - выписанный сертификат действует 30 дней и в нем было сохранено заданное альтернативное имя. Теперь данный сертификат можно использовать в сервисах маршрутизатора.

Для корректной работы сервисов, использующих сертификаты, рекомендуется настроить на маршрутизаторе синхронизацию времени по протоколу NTP.


  • Нет меток