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

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

« Предыдущий Версия 8 Следующий »

Настройка криптопрофилей

Криптопрофили (crypto profile) используются для настройки параметров безопасности, шифрования и аутентификации сигнального (SIP), медиа-трафика (RTP) и https-трафика.

При использовании протоколов TLS или WebSocket Secure (WSS) в качестве SIP-транспорта, а также протокола DTLS-SRTP для шифрования RTP-трафика, возможно использование сертификатов, автоматически сгенерированных самим ESBC, сгенерированных по требованию пользователя на ESBC или загруженных пользователем. По умолчанию используются сертификаты, автоматически сгенерированные самим ESBC, дополнительных настроек для их использования не требуется. Для проксирования https-трафика использование криптопрофиля является необходимым.

Для генерации сертификатов и ключей средствами ESBC используется команда crypto generate. Подробное описание команд для генерации сертификатов и ключей на ESBC приведено в разделе Управление ключами и сертификатами.

Для загрузки сертификатов и ключей на устройство через CLI используется команда copy. Пример команды для копирования через протокол tftp: 

vesbc# copy tftp://10.0.0.1:/ca.crt crypto:cert/ca.crt

Путь для сохранения сертификатов ca и cert — crypto:cert/ 

Путь для сохранения private-key — crypto:private-key/

Для управления пользовательскими сертификатами и версией TLS используется crypto profile.

Описание всех команд настройки криптопрофиля приведено в разделе Настройки криптопрофиля.

Пример настройки crypto profile:

vesbc# 
vesbc# configure 
vesbc(config)# esbc 
vesbc(config-esbc)# crypto profile CRYPTO-PROFILE

#Установка сертификата удостоверяющего центра (CA certificate):
vesbc(config-esbc-crypto-profile)# ca default_ca.pem  

#Установка клиентского сертификата (X.509):
vesbc(config-esbc-crypto-profile)# cert default_cert.pem 

#Установка private-key:
vesbc(config-esbc-crypto-profile)# private-key default_cert_key.pem

#Установка пароля private-key (необязательно):
vesbc(config-esbc-crypto-profile)# password private-key PASSWORD

#Установка минимальной и максимальной версии TLS (необязательно):
vesbc(config-esbc-crypto-profile)# tls min 1.1
vesbc(config-esbc-crypto-profile)# tls max 1.2
vesbc(config-esbc-crypto-profile)# exit

Если не устанавливать версии TLS, то при установлении соединения будет использоваться любая версия 1.0–1.3.

Настройки tls min и tls max используются только при применении crypto profile для SIP-транспорта и проксировании https-трафика, и не используются для шифрования DTLS-SRTP при использовании crypto-profile в медиапрофиле.

Для того чтобы использовать crypto profile для SIP-транспорта, необходимо его указать в настройках нужного транспорта: 

vesbc(config-esbc)# sip transport SIP-TRANSPORT
vesbc(config-esbc-sip-transport)# crypto profile CRYPTO-PROFILE 
vesbc(config-esbc-sip-transport)# exit

Настройки crypto profile будут использоваться, только если выбран режим работы SIP-транспорта tls или wss, для остальных режимов настройки игнорируются.

Для того чтобы использовать crypto profile для шифрования DTLS-SRTP, необходимо его указать в настройках медиа профиля:

vesbc(config-esbc)# media profile MEDIA-PROFILE
vesbc(config-esbc-media-profile)# crypto profile CRYPTO-PROFILE 
vesbc(config-esbc-media-profile)# exit

Настройки crypto profile будут использоваться, только если выбран режим шифрования srtp keying dtls-srtp, для остальных режимов настройки игнорируются.

Проверка клиентского и серверного сертификатов командами verify client-cert и verify server-cert осуществляется только при использовании криптопрофиля для проксирования https-трафика 


Пример использования crypto profile:

Задача:

Использовать сертификат, загруженный пользователем на ESBC, для абонентских подключений по tls версии 1.3 и шифрования медиа DTLS-SRTP.

Решение:

1. Выполнить базовую настройку ESBC для обеспечения маршрутизации абонентских подключений в сторону ECSS-10:

vesbc(config)# esbc
vesbc(config-esbc)# media resource USERS
vesbc(config-esbc-media-resource)# ip address 20.0.0.1
vesbc(config-esbc-media-resource)# exit
vesbc(config-esbc)# media resource ECSS
vesbc(config-esbc-media-resource)# ip address 192.168.1.1
vesbc(config-esbc-media-resource)# exit
vesbc(config-esbc)# sip transport USERS
vesbc(config-esbc-sip-transport)# ip address 20.0.0.1
vesbc(config-esbc-sip-transport)# port 5061
vesbc(config-esbc-sip-transport)# mode tls
vesbc(config-esbc-sip-transport)# exit
vesbc(config-esbc)# sip transport ECSS
vesbc(config-esbc-sip-transport)# ip address 192.168.1.1
vesbc(config-esbc-sip-transport)# port 5070
vesbc(config-esbc-sip-transport)# exit
vesbc(config-esbc)# route-table TO_ECSS
vesbc(config-esbc-route-table)# rule 0
vesbc(config-esbc-route-table-rule)# action direct-to-trunk ECSS
vesbc(config-esbc-route-table-rule)# exit
vesbc(config-esbc-route-table)# exit
vesbc(config-esbc)# trunk sip ECSS
vesbc(config-esbc-trunk-sip)# sip transport ECSS
vesbc(config-esbc-trunk-sip)# media resource 0 ECSS
vesbc(config-esbc-trunk-sip)# remote address 192.168.1.2
vesbc(config-esbc-trunk-sip)# remote port 5070
vesbc(config-esbc-trunk-sip)# exit
vesbc(config-esbc)# user-interface sip USERS
vesbc(config-esbc-user-interface-sip)# sip transport USERS
vesbc(config-esbc-user-interface-sip)# route-table TO_ECSS
vesbc(config-esbc-user-interface-sip)# media resource 0 USERS
vesbc(config-esbc-user-interface-sip)# exit

2. Загрузить файлы сертификата, CA и private-key на ESBC через CLI (в примере указан протокол tftp):

#Загрузка CA сертификата:
vesbc# copy tftp://10.0.0.1:/ca.crt crypto:cert/ca.crt

#Загрузка клиентского сертификата:
vesbc# copy tftp://10.0.0.1:/cert.crt crypto:cert/cert.crt

#Загрузка private-key:
vesbc# copy tftp://10.0.0.1:/key.pem crypto:private-key/key.pem

3. Создать crypto profile, указать в нем файлы сертификатов, private-key и версию TLS:

vesbc(config-esbc)# crypto profile CRYPTO_PROFILE
vesbc(config-esbc-crypto-profile)# ca ca.crt
vesbc(config-esbc-crypto-profile)# cert cert.crt
vesbc(config-esbc-crypto-profile)# private-key key.pem
vesbc(config-esbc-crypto-profile)# tls min 1.3
vesbc(config-esbc-crypto-profile)# tls max 1.3
vesbc(config-esbc-crypto-profile)# exit

4. Создать медиапрофиль для использования DTLS-SRTP и привязать к нему crypto profile:

vesbc(config-esbc)# media profile MP_USERS
vesbc(config-esbc-media-profile)# srtp mode mandatory
vesbc(config-esbc-media-profile)# srtp keying dtls-srtp
vesbc(config-esbc-media-profile)# crypto profile CRYPTO_PROFILE
vesbc(config-esbc-media-profile)# exit

5. Привязать media profile MP_USERS к user-interface sip USERS:

vesbc(config-esbc)# user-interface sip USERS
vesbc(config-esbc-user-interface-sip)# media profile MP_USERS
vesbc(config-esbc-user-interface-sip)# exit 

6. Привязать crypto profile CRYPTO_PROFILE к sip transport USERS:

vesbc(config-esbc)# sip transport USERS
vesbc(config-esbc-sip-transport)# crypto profile CRYPTO_PROFILE
vesbc(config-esbc-sip-transport)# exit

7. Применить настройки:

vesbc(config-esbc)# do commit
Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds.
vesbc(config-esbc)# do confirm
Configuration has been confirmed. Commit timer canceled.

Автоматическое распространение ключей и сертификатов 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-клиента, который будет использоваться в настройках PKI-сервера как источник самоподписанных сертификатов.

esr(config)# crypto pki trustpoint <TRUSTPOINT>

<TRUSTPOINT> – имя PKI-клиента, задаётся строкой от 1 до 31 символа.

3

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

esr(config-trustpoint)# subject-name


4

Указать код страны (необязательно).

esr(config-trustpoint-subject-name)# country <COUNTRY>

<COUNTRY> – код страны, задаётся строкой длиной 2 символа. Рекомендуется использовать двухбуквенные обозначения стран "alpha-2" из стандарта ISO 3166-1.

5Указать название штата, области или провинции (необязательно).esr(config-trustpoint-subject-name)# state <STATE><STATE> – название штата, области или провинции, задаётся строкой от 1 до 128 символов.
6Указать название населенного пункта или его территориальной единицы (необязательно).esr(config-trustpoint-subject-name)# locality <LOCATION><LOCATION> – название населенного пункта или его территориальной единицы, задаётся строкой от 1 до 128 символов.
7Указать название организации (необязательно).esr(config-trustpoint-subject-name)# organization <ORGANIZATION><ORGANIZATION> – название организации, задаётся строкой от 1 до 64 символов.
8Указать подразделение организации (необязательно).esr(config-trustpoint-subject-name)# organization-unit <ORGANIZATION-UNIT>
<ORGANIZATION-UNIT> – название подразделения организации, задаётся строкой от 1 до 64 символов.
9Указать общее имя сертификата.esr(config-trustpoint-subject-name)# common-name <COMMON-NAME>

<COMMON-NAME> – общее имя, задаётся строкой от 1 до 64 символов.

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

10Перейти в режим настройки альтернативных имен сертификата (необязательно).esr(config-trustpoint)# subject-alt-name


11Указать 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].

12Указать полное доменное имя хоста в качестве альтернативного имени сертификата (необязательно). esr(config-trustpoint-san)# dns <NAME>

<NAME> – полное доменное имя хоста (FQDN), задается строкой от 1 до 235 символов. Пример записи доменного имени – router.example.loc.

13Указать адрес электронной почты в качестве альтернативного имени сертификата (необязательно).esr(config-trustpoint-san)# email <EMAIL>

<EMAIL> – адрес электронной почты, задается строкой от 6 до 254 символов. Пример записи электронной почты – router@example.loc.

14

Перейти в режим настройки механизма выпуска сертификата. Для PKI-клиента, выпускающего самоподписанные сертификаты укажем тип "selfsigned".

esr(config-trustpoint)# enrollment selfsigned


15

Указать время жизни самоподписанных сертификатов (необязательно). 

esr(config-trustpoint-enrollment-selfsigned)# lifetime <DAYS>

<DAYS> – количество дней, принимает значения в диапазоне [1..3650].

Значение по умолчанию: 3650.

16

Указать назначение генерируемых сертификатов. Для PKI-клиента, используемого в настройках PKI-сервера в качестве источника самоподписанных сертификатов необходимо указать значение "root-ca".

esr(config-trustpoint)# usage root-ca


17

Указать экземпляр VRF, в котором будет работать PKI-клиент (необязательно). Если планируется работа PKI-сервера в определенном VRF, PKI-клиент с самоподписанными сертификатами также требуется вынести в этот VRF.

esr(config-trustpoint)# ip vrf forwarding <VRF>

<VRF> – имя VRF, задается строкой до 31 символа.

18

Включить PKI-клиент.

esr(config-trustpoint)# enable


19

Перейти в режим настройки PKI-сервера.

esr(config)# crypto pki server


20

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

esr(config-pki-server)# trustpoint <TRUSTPOINT>

<TRUSTPOINT> – имя PKI-клиента, задаётся строкой от 1 до 31 символа.

21Указать экземпляр VRF, в котором будет работать PKI-сервер (необязательно).esr(config-pki-server)# ip vrf forwarding <VRF>

<VRF> – имя VRF, задается строкой до 31 символа.

22

Указать 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-сервер будет слушать входящие подключения.

23Указать 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...).

24Указать время жизни выписываемых клиентам сертификатов в днях (необязательно).esr(config-pki-server)# lifetime <DAYS>

<DAYS> – количество дней, принимает значения в диапазоне [1..3650].

Значение по умолчанию: 365.

25Включить 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)#

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

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


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#
ESR.CA# sh ntp peers 
Clock is synchronized, stratum 6, reference is 10.0.103.1
    remote                                           vrf          refid             st   t   when   poll   reach   delay      offset     jitter     
-   ----------------------------------------------   ----------   ---------------   --   -   ----   ----   -----   --------   --------   --------   
*   10.0.103.1                                                    127.127.1.0       5    u   16     64     37      0.601      8.533      0.019      
ESR.CA# 

Перейдем к настройке PKI-клиента, который будет использоваться в качестве источника самоподписанных сертификатов для PKI-сервера:

ESR.CA(config)# crypto pki trustpoint ROOT_CA
ESR.CA(config-trustpoint)#

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

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

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

ESR.CA(config-trustpoint)# subject-alt-name
ESR.CA(config-trustpoint-san)# ipv4 10.0.103.2
ESR.CA(config-trustpoint-san)# dns ca.company.loc
ESR.CA(config-trustpoint-san)# exit
ESR.CA(config-trustpoint)#

Перейдем в режим настройки механизма выпуска сертификата. Для PKI-клиента, выпускающего самоподписанные сертификаты, укажем тип "selfsigned". В нем настроим время жизни самоподписанных сертификатов:

ESR.CA(config-trustpoint)# enrollment selfsigned 
ESR.CA(config-trustpoint-enrollment-selfsigned)# lifetime 365
ESR.CA(config-trustpoint-enrollment-selfsigned)# exit
ESR.CA(config-trustpoint)#

Укажем назначение генерируемых сертификатов. Для PKI-клиента, используемого в настройках PKI-сервера, в качестве источника самоподписанных сертификатов необходимо указать значение "root-ca":

ESR.CA(config-trustpoint)# usage root-ca 
ESR.CA(config-trustpoint)#

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

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

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

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

Укажем имя ранее настроенного PKI-клиента, который будет использоваться в настройках PKI-сервера как источник самоподписанных сертификатов:

ESR.CA(config-pki-server)# trustpoint ROOT_CA 
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)#

Включим 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 trustpoints можно увидеть PKI-клиент ROOT_CA, готовый к работе, а добавив его имя в конце команды, можно более подробно рассмотреть его текущий статус:

ESR.CA# show crypto pki trustpoints 
Name              Enrollment   Usage     Subject name                     Status               Next action            
---------------   ----------   -------   ------------------------------   ------------------   --------------------   
ROOT_CA           selfsigned   root-ca   CN=ca.company.loc/O=Company/L=   Ready                2026-12-17 08:59:16    
                                         Moscow/ST=Moscow/C=RU                                                        

ESR.CA# show crypto pki trustpoints ROOT_CA 
Name:               ROOT_CA
Usage:              root-ca
Subject name:       CN=ca.company.loc/O=Company/L=Moscow/ST=Moscow/C=RU
Enrollment:         selfsigned
Status:             Ready
Renew date:         2026-12-17 08:59:16
CRL:                Inactive
ESR.CA#

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

ESR.CA# show crypto pki server 
Status:                    Enabled
Associated trustpoint:     ROOT_CA
Lifetime days:             14
Certificate fingerprint:   A2:0C:10:C7:0E:06:3A:2F:EE:5F:C2:72:39:36:31:0A
Source:                    10.0.103.2
Last issued serial number: --
Challenge password:        Active
Shadow:                    Inactive
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 символов.

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

11Перейти в режим настройки альтернативных имен сертификата (необязательно).esr(config-trustpoint)# subject-alt-name


12Указать 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].

13Указать полное доменное имя хоста в качестве альтернативного имени сертификата (необязательно). esr(config-trustpoint-san)# dns <NAME>

<NAME> – полное доменное имя хоста (FQDN), задается строкой от 1 до 235 символов. Пример записи доменного имени – router.example.loc.

14Указать адрес электронной почты в качестве альтернативного имени сертификата (необязательно).esr(config-trustpoint-san)# email <EMAIL>

<EMAIL> – адрес электронной почты, задается строкой от 6 до 254 символов. Пример записи электронной почты – router@example.loc.

14

Перейти в режим настройки механизма выпуска сертификата. Для PKI-клиента, выпускающего сертификаты от вышестоящего удостоверяющего центра по протоколу SCEP необходимо указать значение "scep".

esr(config-trustpoint)# enrollment scep


15Указать URL для подключения к PKI-серверу.esr(config-trustpoint-enrollment-scep)# url <URL>

<URL> – URL для подключения к PKI-серверу, задается в виде

"http:// <ADDR>[:<PORT>]/", где:

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

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

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

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

17Указать challenge-password, который будет использован для аутентификации на PKI-сервере (необязательно).esr(config-trustpoint-enrollment-scep)# challenge-password { <CLEAR-TEXT> | encrypted <ENCRYPTED-TEXT> }

<CLEAR-TEXT> – пароль, задаётся строкой от 8 до 32 символов;

<ENCRYPTED-TEXT> – зашифрованный пароль размером от 8 байт до 32 байт (от 16 до 64 символов) в шестнадцатеричном формате (0xYYYY...) или (YYYY...).

16

Указать назначение генерируемых сертификатов. Для PKI-клиента, используемого в качестве источника ключевой информации в IPsec-туннелях, необходимо указать значение "ipsec".

esr(config-trustpoint)# usage ipsec


9Указать экземпляр VRF, в котором будет работать PKI-клиент (необязательно).esr(config-trustpoint)# ip vrf forwarding <VRF>

<VRF> – имя VRF, задается строкой до 31 символа.

10

Указать IP-адрес или сетевой интерфейс, с которого PKI-клиент будет выполнять запросы к удостоверяющему центру (необязательно).

esr(config-trustpoint)# source-address <ADDR>

<ADDR> – IP-адрес, назначенный на локальном сетевом интерфейсе маршрутизатора, с которого PKI-клиент будет выполнять запросы, задаётся в виде AAA.BBB.CCC.DDD, где каждая часть принимает значения [0..255].

esr(config-trustpoint)# source-interface <IF>

<IF> – интерфейс или туннель, с которого PKI-клиент будет выполнять запросы.

18Включить 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)#

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

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


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# 
ESR.R1# sh ntp peers 
Clock is synchronized, stratum 6, reference is 10.0.113.1
    remote                                           vrf          refid             st   t   when   poll   reach   delay      offset     jitter     
-   ----------------------------------------------   ----------   ---------------   --   -   ----   ----   -----   --------   --------   --------   
*   10.0.113.1                                                    127.127.1.0       5    u   10     64     37      0.441      0.017      2.344      
ESR.R1#

Перейдем к настройке 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)#

Перейдем в режим настройки механизма выпуска сертификата. Для PKI-клиента, выпускающего сертификаты от вышестоящего удостоверяющего центра по протоколу SCEP необходимо указать значение "scep":

ESR.R1(config-trustpoint)# enrollment scep
ESR.R1(config-trustpoint-enrollment-scep)#

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

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

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

ESR.R1(config-trustpoint-enrollment-scep)# fingerprint A2:0C:10:C7:0E:06:3A:2F:EE:5F:C2:72:39:36:31:0A
ESR.R1(config-trustpoint-enrollment-scep)#

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

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

Укажем назначение генерируемых сертификатов. Для PKI-клиента, используемого в качестве источника ключевой информации в IPsec-туннелях, необходимо указать значение "ipsec".

ESR.R1(config-trustpoint)# usage ipsec
ESR.R1(config-trustpoint)#

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

ESR.R1(config-trustpoint)# source-interface gi 1/0/1.113
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   Usage     Subject name                     Status               Next action            
---------------   ----------   -------   ------------------------------   ------------------   --------------------   
TP_R1             scep         ipsec     CN=r1.company.loc/O=Company/L=   Ready                2026-03-12 11:40:00    
                                         Moscow/ST=Moscow/C=RU                                                        

ESR.R1#

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

ESR.R1# show crypto pki trustpoints TP_R1 
Name:               TP_R1
Usage:              ipsec
Subject name:       CN=r1.company.loc/O=Company/L=Moscow/ST=Moscow/C=RU
Enrollment:         scep
Challenge password: Active
Status:             Ready
Renew date:         2026-03-12 11:40:00
CRL:                Active
CRL status:         Exist
CRL renew date:     2026-03-01 08:59:16
ESR.R1#

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

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

ESR.R1# show crypto pki trustpoints 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 trustpoints TP_R1 cert | include "Serial"
Serial:                                           85:71:EC:28:6C:C8:4E:23:B2:03:03:2F:4D:DF:B8:63
ESR.R1# show crypto pki trustpoints TP_R1
Name:               TP_R1
Usage:              ipsec
Subject name:       CN=r1.company.loc/O=Company/L=Moscow/ST=Moscow/C=RU
Enrollment:         scep
Challenge password: Active
Status:             Ready
Renew date:         2026-03-12 11:40:00
CRL:                Active
CRL status:         Exist
CRL renew date:     2026-03-01 08:59:16
ESR.R1#
ESR.R1# show date
"2025-11-02 11:35:46"
ESR.R1# show crypto pki trustpoints TP_R1
Name:               TP_R1
Usage:              ipsec
Subject name:       CN=r1.company.loc/O=Company/L=Moscow/ST=Moscow/C=RU
Enrollment:         scep
Challenge password: Active
Status:             Ready
Renew date:         2026-03-23 16:28:00
CRL:                Active
CRL status:         Exist
CRL renew date:     2026-03-13 11:40:00
ESR.R1# show crypto pki trustpoints TP_R1 cert | include "Serial"
Serial:                                           D4:F1:0C:10:9B:59:4C:88:BF:95:03:D8:F4:E2:40:8B
ESR.R1#

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

ESR.CA# show crypto pki server database 
Serial                                            State       Issue date   Expiration   Revocation   Subject name                     
                                                                           date         date                                          
-----------------------------------------------   ---------   ----------   ----------   ----------   ------------------------------   
85:71:EC:28:6C:C8:4E:23:B2:03:03:2F:4D:DF:B8:63   Revoked     2026-03-01   2026-03-15   2026-03-12   CN=r1.company.loc/O=Company/L=   
                                                              06:52:00     06:52:00     11:40:00     Moscow/ST=Moscow/C=RU            

D4:F1:0C:10:9B:59:4C:88:BF:95:03:D8:F4:E2:40:8B   Valid       2026-03-12   2026-03-26   --           CN=r1.company.loc/O=Company/L=   
                                                              11:40:00     11:40:00                  Moscow/ST=Moscow/C=RU            

ESR.CA#

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

После завершения инициализации PKI-сервера обслуживающий его PKI-клиент вычитывает период действия сертификата и за 20% времени до его истечения планирует процедуру подготовки так называемого теневого сертификата (certificate auto-rollover). Данный сертификат предназначен для замены текущего сертификата удостоверяющего центра после его истечения. Наличие сгенерированного теневого сертификата отображается в графе "Shadow" вывода команды show crypto pki server. Дата запланированной генерации теневого сертификата присутствует в графе "Renew date" вывода команды show crypto pki trustpoints с указанием имени PKI-клиента, обслуживающего PKI-сервер:

ESR.CA# show crypto pki server
Status:                    Enabled
Associated trustpoint:     ROOT_CA
Lifetime days:             14
Certificate fingerprint:   A2:0C:10:C7:0E:06:3A:2F:EE:5F:C2:72:39:36:31:0A
Source:                    10.0.103.2
Last issued serial number: D4:F1:0C:10:9B:59:4C:88:BF:95:03:D8:F4:E2:40:8B
Challenge password:        Active
Shadow:                    Inactive
ESR.CA# show crypto pki trustpoints
Name              Enrollment   Usage     Subject name                     Status               Next action            
---------------   ----------   -------   ------------------------------   ------------------   --------------------   
ROOT_CA           selfsigned   root-ca   CN=ca.company.loc/O=Company/L=   Ready                2026-12-17 08:59:16    
                                         Moscow/ST=Moscow/C=RU                                                        

ESR.CA# show crypto pki trustpoints ROOT_CA 
Name:               ROOT_CA
Usage:              root-ca
Subject name:       CN=ca.company.loc/O=Company/L=Moscow/ST=Moscow/C=RU
Enrollment:         selfsigned
Status:             Ready
Renew date:         2026-12-17 08:59:16
CRL:                Inactive
ESR.CA#

После успешной генерации теневого сертификата обновится графа "Shadow" вывода команды show crypto pki server, а также состояние соответствующего PKI-клиента в выводах команды show crypto pki trustpoints:

ESR.CA# show date
"2026-12-17 09:01:36"
ESR.CA# 
ESR.CA# show crypto pki server
Status:                    Enabled
Associated trustpoint:     ROOT_CA
Lifetime days:             14
Certificate fingerprint:   A2:0C:10:C7:0E:06:3A:2F:EE:5F:C2:72:39:36:31:0A
Source:                    10.0.103.2
Last issued serial number: 0A:AF:EA:35:92:E6:48:08:B3:A3:7A:8B:29:85:3B:56
Challenge password:        Active
Shadow:                    Active
ESR.CA# show crypto pki trustpoints 
Name              Enrollment   Usage     Subject name                     Status               Next action            
---------------   ----------   -------   ------------------------------   ------------------   --------------------   
ROOT_CA           selfsigned   root-ca   CN=ca.company.loc/O=Company/L=   Ready with shadow    2027-02-28 08:59:16    
                                         Moscow/ST=Moscow/C=RU                                                        

ESR.CA# show crypto pki trustpoints ROOT_CA 
Name:               ROOT_CA
Usage:              root-ca
Subject name:       CN=ca.company.loc/O=Company/L=Moscow/ST=Moscow/C=RU
Enrollment:         selfsigned
Status:             Ready with shadow
Renew date:         2027-02-28 08:59:16
CRL:                Inactive
ESR.CA#

Любой PKI-клиент, обращающийся за выпуском сертификата в удостоверяющий центр и получивший клиентский сертификат со сроком завершения валидности, эквивалентным сроку завершения жизни сертификата удостоверяющего центра, зафиксирует событие истечения жизни сертификата удостоверяющего центра и отдельным запросом запросит теневой сертификат уже для себя:

ESR.R1# sh crypto pki trustpoints
Name              Enrollment   Usage     Subject name                     Status               Next action            
---------------   ----------   -------   ------------------------------   ------------------   --------------------   
TP_R1             scep         ipsec     CN=r1.company.loc/O=Company/L=   Ready with shadow    2027-02-28 08:59:16    
                                         Moscow/ST=Moscow/C=RU                                                        

ESR.R1# sh crypto pki trustpoints TP_R1
Name:               TP_R1
Usage:              ipsec
Subject name:       CN=r1.company.loc/O=Company/L=Moscow/ST=Moscow/C=RU
Enrollment:         scep
Challenge password: Active
Status:             Ready with shadow
Renew date:         2027-02-28 08:59:16
CRL:                Active
CRL status:         Exist
CRL renew date:     2027-02-26 15:00:00
ESR.R1# sh crypto pki trustpoints TP_R1 ca | include " after"
    Valid after:                                  2026-02-28 08:59:16
    Invalid after:                                2027-02-28 08:59:16
ESR.R1# sh crypto pki trustpoints TP_R1 cert | include " after"
    Valid after:                                  2027-02-25 15:00:00
    Invalid after:                                2027-02-28 08:59:16
ESR.R1#

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

ESR.CA# show crypto pki trustpoints 
Name              Enrollment   Usage     Subject name                     Status               Next action            
---------------   ----------   -------   ------------------------------   ------------------   --------------------   
ROOT_CA           selfsigned   root-ca   CN=ca.company.loc/O=Company/L=   Ready with shadow    2027-02-28 08:59:16    
                                         Moscow/ST=Moscow/C=RU                                                        

ESR.CA#
ESR.CA# show date
"2027-02-28 09:00:01"
ESR.CA# sh crypto pki server 
Status:                    Enabled
Associated trustpoint:     ROOT_CA
Lifetime days:             14
Certificate fingerprint:   EA:13:09:02:46:6F:F3:91:46:F3:1F:AB:2F:90:CA:18
Source:                    10.0.103.2
Last issued serial number: F3:C4:74:88:E8:AC:44:4D:B9:DC:CD:E8:9E:95:0A:7E
Challenge password:        Active
Shadow:                    Inactive
ESR.CA# show crypto pki trustpoints 
Name              Enrollment   Usage     Subject name                     Status               Next action            
---------------   ----------   -------   ------------------------------   ------------------   --------------------   
ROOT_CA           selfsigned   root-ca   CN=ca.company.loc/O=Company/L=   Ready                2027-12-17 08:59:16    
                                         Moscow/ST=Moscow/C=RU                                                        

ESR.CA#
ESR.R1# show crypto pki trustpoints 
Name              Enrollment   Usage     Subject name                     Status               Next action            
---------------   ----------   -------   ------------------------------   ------------------   --------------------   
TP_R1             scep         ipsec     CN=r1.company.loc/O=Company/L=   Ready with shadow    2027-02-28 08:59:16    
                                         Moscow/ST=Moscow/C=RU                                                        

ESR.R1# 
ESR.R1# show date
"2027-02-28 09:00:01"
ESR.R1# show crypto pki trustpoints 
Name              Enrollment   Usage     Subject name                     Status               Next action            
---------------   ----------   -------   ------------------------------   ------------------   --------------------   
TP_R1             scep         ipsec     CN=r1.company.loc/O=Company/L=   Ready                2027-03-11 13:47:16    
                                         Moscow/ST=Moscow/C=RU                                                        

ESR.R1#

Ручная генерация и распространение ключей и сертификатов 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.


  • Нет меток