Инфраструктура открытых ключей
В EcoRouterOS для обеспечения безопасности соединения пользователей используется протокол TLS (Transport Layer Security — безопасность транспортного уровня) на основе инфраструктуры открытых ключей (PKI) и сертификатов X.509. Установка безопасного соединения между сервером и клиентом происходит совместно с процессом аутентификации клиента на сервере. EcoRouter при этом выполняет роли Центра сертификации (Certificate Authority — CA) и сервера.
Таким образом при подключении к EcoRouter устройство отправляет пользователю сообщение, содержащее сертификат маршрутизатора и запрос сертификата пользователя. Пользователь, в свою очередь, отправляет сообщение, содержащее его сертификат, после чего устанавливается безопасное соединение. При таком соединении вся информация, передающаяся между пользователем и устройством, шифруется при помощи закрытого ключа (Private Key). При передаче сообщения маршрутизатором сообщение шифруется закрытым ключом маршрутизатора таким образом, что расшифровать его пользователь может при помощи имеющегося у него открытого ключа (сертификата маршрутизатора). И наоборот, пользователь отправляет сообщения, зашифрованные при помощи закрытого ключа пользователя, которые EcoRouter расшифровывает при помощи переданного ему в начале сессии сертификата пользователя. Для того чтобы организовать этот процесс, у пользователя и EcoRouter должен быть идентичный набор сертификатов и специфический набор закрытых ключей.
Закрытый ключ и сертификат сервера автоматически генерируются в прошивке EcoRouter.
Закрытый ключ и сертификат пользователя генерируются EcoRouter при создании пользователя. При этом EcoRouter выступает в качестве CA, то есть сервера, отвечающего за регистрацию пользователей, обеспечивающего выпуск ключей, хранение реестра выданных ключей и проверку их статуса.
Таким образом для взаимодействия с маршрутизатором по защищённому соединению у пользователя должны храниться: сертификат EcoRouter (CA), сертификат пользователя, закрытый ключ пользователя.
Для просмотра пользовательских сертификатов в EcoRouter есть несколько команд, по умолчанию доступных только пользователям с ролью admin.
Для просмотра пользовательских сертификатов используется команда административного режима crypto certificate export
. Для нее доступны модификаторы, при помощи которых можно отфильтровать вывод по конкретным пользователям.
В приведённом ниже примере сокращен вывод самих сертификатов. Все сертификаты хранятся и выводятся на консоль в кодировке Base64.
ecorouter#crypto certificate export
User: admin
Certificate: Valid
-----BEGIN CERTIFICATE-----
ESTCCA...gAyhj
-----END CERTIFICATE-----
User: radius
Certificate: Valid
-----BEGIN CERTIFICATE-----
ESzC...l0lBt18=
-----END CERTIFICATE-----
User: tacacs
Certificate: Valid
-----BEGIN CERTIFICATE-----
E...j7tDSM=
-----END CERTIFICATE-----
Для экспорта (вывода на экран) закрытого ключа пользователя используется команда административного режима crypto key export. Данная команда выводит закрытый ключ того пользователя, который аутентифицирован в системе на данный момент.
В приведённом ниже примере сокращён вывод самого ключа. Все ключи хранятся и выводятся на консоль в кодировке Base64. Закрытые ключи должны передаваться на пользовательские компьютеры безопасным образом, исключающим возможность их получения третьими лицами.
ecorouter#crypto key export
User: admin
-----BEGIN RSA PRIVATE KEY-----
IEp...kjUcAQLyrg==
-----END RSA PRIVATE KEY-----
Для экспорта (вывода на экран) сертификата EcoRouter (CA) используется команда административного режима crypto ca export. Данная команда выводит сертификат сервера вместе с представленными в явном виде полями, такими как поле имени сервера — Subject: CN=ecorouter, подписью сервера и самим сертификатом.
В приведённом ниже примере сокращен вывод самого сертификата и подписи сервера. Сертификат CA хранится в базе данных на маршрутизаторе и выводится на консоль в кодировке Base64, а информация о нем — в текстовом виде.
ecorouter#crypto ca export
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
9a:14:57:6d:84:76:e9:31
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=ecorouter
Validity
Not Before: Oct 4 08:17:55 2016 GMT
Not After : Oct 5 08:17:55 2026 GMT
Subject: CN=ecorouter
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (4096 bit)
Modulus:
00:c3:db:b8:b1:a7:a1:4b:34:82:af:1b:df:6a:2e:
...
0b:49:95
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
EA:DC:87:08:D8:03:AB:BB:44:C4:80:A1:58:38:91:45:16:E8:53:0A
X509v3 Authority Key Identifier:
keyid:EA:DC:87:08:D8:03:AB:BB:44:C4:80:A1:58:38:91:45:16:E8:53:0A
X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: sha256WithRSAEncryption
ac:57:98:1f:5f:00:fa:80:d1:cc:fe:c6:e5:50:06:ff:14:d6:
...
37:a7:ad:8f:2d:99:1a:0c
-----BEGIN CERTIFICATE-----
MIIE+z...kaDA==
-----END CERTIFICATE-----
Для того чтобы экспортировать выведенные на экран сертификаты и ключ, необходимо скопировать их в файлы с соответствующими названиями:
- cacert.pem — сертификат EcoRouter (CA),
- clientcert.pem — сертификат пользователя,
- clientkey.pem — закрытый ключ пользователя.
Копировать вывод закрытого ключа и сертификата открытого ключа пользователя необходимо от символов “-----BEGIN” до последнего дефиса в строке “-----END CERTIFICATE-----” (или “-----END RSA PRIVATE KEY-----”). Копировать сертификат CA необходимо, начиная с строки “Certificate:“.
На пользовательском устройстве эти файлы должны быть размещены в директориях, используемых клиентским программным обеспечением. Для Unix/Linux по умолчанию это:
- /etc/pki/CA/cacert.pem
- /etc/pki/libvirt/private/clientkey.pem
- /etc/pki/libvirt/clientcert.pem