EAP-TLS является протоколом взаимной аутентификации клиента и сервера с использованием сертификатов. Данный метод предусматривает, что для сервера и каждого клиента выпускается отдельный сертификат. За выпуск сертификатов отвечает центр сертификации (далее ЦС).
Для корректной работы EAP-TLS требуется выполнить следующие действия:
Сертификат, используемый NAICE-RADIUS для выполнения EAP-TLS аутентификации, не изменяет сертификат, используемый для EAP-PEAP аутентификации. |
Пример создания запроса на выпуск сертификата и пример управления сертификатами с использованием утилиты OpenSSL приведены в разделе Приложения. |
Установка сертификата может быть выполнена плейбуком Ansible или же при необходимости вручную.
При установке NAICE через OVA-образ установка сертификатов выполняется по инструкции v1.0_3.3.5 Замена сертификатов EAP-TLS. |
При выполнении установки плейбуками Ansible будет выполнен рестарт всех сервисов NAICE, что приведет к кратковременному перерыву связи! |
Для корректной работы требуется файлы сертификатов расположить на хосте, с которого будет выполняться плейбук Ansible в папке ansible/roles/docker/files/eap-tls.
Требуется три файла:
trusted_server.crt;trusted_server_chain.crt (данный сертификат требуется выпустить средствами используемого в организации УЦ);trusted_server.k (ключ генерируется при создании запроса на сертификат).Далее приведен пример с расположением файлов в на хосте выполнения плейбуков Ansible:
$ls -lh ansible/roles/docker/files/eap-tls -rw-rw-r-- 1 root root 1,4K ноя 19 15:44 trusted_server.crt -rw-rw-r-- 1 root root 1,4K ноя 22 05:20 trusted_server_chain.crt -rw------- 1 root root 1,9K ноя 22 05:19 trusted_server.k |
Файлы могут иметь произвольное наименование.
После расположения файлов на хосте требуется в файле ansible/group_vars/all.yml указать значения переменных:
# параметры для авторизации по протоколу EAP-TLS # параметры сертификатов # для включения установки сертификатов протокола EAP-TLS необходимо расположить файлы сертификатов сервера в папке ansible/roles/docker/files/eap-tls radius_eap_tls_cert_dir_copy: false # включить копирование сертификатов из директории ansible/roles/docker/files/eap-tls radius_eap_tls_certs_ca_cert_file: trusted_server.crt # имя файла корневого (CA) сертификата radius_eap_tls_certs_private_key_file: trusted_server.k # имя файла приватного ключа сертификата сервера radius_eap_tls_certs_private_key_password: # пароль к файлу приватного ключа сертификата сервера, оставьте пустым, если файл приватного ключа не запаролен radius_eap_tls_certs_certificate_file: trusted_server_chain.crt # имя файла серверного сертификата |
Указать при необходимости параметры взаимодействия с OCSP-сервером:
# настройки проверки статуса отозванных сертификатов по протоколу OCSP radius_eap_tls_ocsp_enable: 'false' # Включение проверки статуса отзыва сертификата по протоколу OCSP radius_eap_tls_ocsp_override_url: 'false' # Использовать URL сервиса OCSP из сертификата radius_eap_tls_ocsp_url: 'http://127.0.0.1/ocsp' # URL для обращения к сервису OCSP radius_eap_tls_ocsp_softfail: 'false' # Мягкая проверка доступа к серверу проверки OSCP, если сервер недоступен, процесс не завершится, а продолжится radius_eap_tls_ocsp_timeout: 0 # Таймаут обращения к серверу OSCP radius_eap_tls_ocsp_use_nonce: 'true' # Позволяет включить одноразовый код в запрос - nonce, который может быть включен в соответствующий ответ |
Работа с OCSP-сервером поддержана только по протоколу HTTP с реализацией MS Windows Server! |
Описание параметров:
| Параметр | Назначение |
|---|---|
| radius_eap_tls_cert_dir_copy | Переменная, отвечающая за копирование сертификатов из папки на целевой хост и использование их в сервисе nacie-radius. Значение по умолчанию false, в этом случае аутентификация по протоколу EAP-TLS считается неиспользуемой и работать не будет. Копирование файлов на целевой хост также выполняться не будет. |
| radius_eap_tls_certs_ca_cert_file | Имя файла корневого сертификата ЦС. |
| radius_eap_tls_certs_private_key_file | Имя файла приватного ключа сервера. |
| radius_eap_tls_certs_private_key_password | Пароль к файлу приватного ключа сервера. Если значение не указано, считается что пароль не используется. В пароле не допускается использовать символы: $, ', ", `, знаки скобок и пробел. |
| radius_eap_tls_certs_certificate_file | Имя файла сертификата сервера. |
| radius_eap_tls_ocsp_enable | Включить проверку статуса отзыва сертификата по протоколу OCSP (false | true). По умолчанию false (проверка отключена). |
| radius_eap_tls_ocsp_override_url | Откуда брать URL OCSP-сервера: false - использовать URL из сертификата пользователя; true - использовать URL из настройки radius_eap_tls_ocsp_url. По умолчанию false. |
| radius_eap_tls_ocsp_url | URL для обращения к OCSP-серверу (разрешен только http-режим). |
| radius_eap_tls_ocsp_softfail | Поведение в случае недоступности OCSP-сервера (false | true): false - прекратить аутентификацию, если не удается получить доступ; true - продолжить аутентификацию без проверки отзыва сертификата, если OCSP-сервер не доступен. |
| radius_eap_tls_ocsp_timeout | Таймаут обращения к серверу OCSP (секунды). По умолчанию 0. |
| radius_eap_tls_ocsp_use_nonce | Включить одноразовый код nonce в запрос на проверку сертификата для предотвращения подмены запроса (false | true): false - не включать, true - включить. По умолчанию true. |
Сохранить значения переменных и выполнить плейбук ansible.
Для однохостовой инсталяции:
ansible-playbook install-naice.yml -i hosts.yml |
Для инсталяции с резервированием:
ansible-playbook reservation-naice-services.yml -i hosts.yml |
Можно повторно выполнить плейбук, если ранее при установке NAICE сертификаты для работы EAP-TLS не были установлены. |
Сертификаты на целевой хост копируются в папку, которая указана в переменной naice_docker_path, в подпапку eap-tls. По умолчанию /etc/docker-naice/eap-tls.
При выполнении установки сертификатов вручную будет выполнен рестарт сервиса |
Для корректной работы требуется файлы сертификатов расположить на хосте с NAICE в папке установки системы. По умолчанию это папка /etc/docker-naice/eap-tls.
Требуется три файла:
trusted_server.crt;trusted_server_chain.crt (данный сертификат требуется выпустить средствами используемого в организации УЦ);trusted_server.k (ключ генерируется при создании запроса на сертификат).Далее приведен пример с расположением файлов в на сервере NAICE при использовании пути установки по умолчанию:
$ ls -ln /etc/docker-naice/eap-tls total 12 -rw------- 1 0 0 1314 Aug 19 15:13 trusted_server.crt -rw------- 1 0 0 1854 Aug 19 15:13 trusted_server.k -rw------- 1 0 0 2130 Aug 19 15:13 trusted_server_chain.crt |
Файлы могут иметь произвольное наименование, но рекомендуется не изменять без необходимости.
Последовательность действий (все примеры приведены исходя из того, что используется директория установки NAICE по умолчанию - /etc/docker-naice):
На сервере с NAICE создать директорию, в которую необходимо поместить сертификаты (например, /директория-установки-NAICE/eap-tls):
sudo mkdir /etc/docker-naice/eap-tls |
Проверить и при необходимости назначить корректные права доступа и владельца файлов:
sudo chown root:root /etc/docker-naice/eap-tls sudo chmod 600 /etc/docker-naice/eap-tls |
Пробросить папку с сертификатами в контейнер naice-radius с помощью volume, отредактировав файл docker-compose.yml в папке установки NAICE:
naice-radius:
[...]
volumes:
- ${RADIUS_LOG_PATH}:/opt/var/log/radius
- ./eap-tls:/opt/etc/raddb/certs/eap-tls |
naice-radius:
container_name: naice-radius
image: ${RADIUS_HUB}/naice-radius:${RADIUS_VERSION_TAG}
hostname: ${HOSTNAME}
ports:
- "${RADIUS_AUTH_PORT}:1812/udp"
- "${RADIUS_ACCT_PORT}:1813/udp"
- "${RADIUS_EXPORTER_PORT}:9812/tcp"
env_file: .env
deploy:
resources:
limits:
memory: 512M
reservations:
memory: 256M
restart_policy:
condition: always
healthcheck:
test: "curl http://127.0.0.1:9812/metrics | grep 'freeradius_up 1' || exit 1"
interval: 10s
timeout: 5s
retries: 10
volumes:
- ${RADIUS_LOG_PATH}:/opt/var/log/radius
- ./eap-tls:/opt/etc/raddb/certs/eap-tls
|
Указать названия новых файлов (если были изменены) и пароль к ключу trusted_server.k (если он установлен) в переменных окружения .env, в папке установки NAICE:
RADIUS_EAP_TLS_CERTS_CA_CERT_FILE: trusted_server.crt # Имя файла корневого (CA) сертификата УЦ. RADIUS_EAP_TLS_CERTS_PRIVATE_KEY_FILE: trusted_server.k # Имя файла приватного ключа сертификата RADIUS. RADIUS_EAP_TLS_CERTS_PRIVATE_KEY_PASSWORD: password # Пароль к файлу приватного ключа сертификата RADIUS; оставить пустым, если файл приватного ключа не защищен паролем. RADIUS_EAP_TLS_CERTS_CERTIFICATE_FILE: trusted_server_chain.crt # Имя файла сертификата RADIUS. |
RADIUS_EAP_TLS_OCSP_ENABLE: false # Включить проверку статуса отзыва сертификата по протоколу OCSP (false | true). По умолчанию false (проверка отключена). RADIUS_EAP_TLS_OCSP_OVERRIDE_URL: false # Откуда брать URL OCSP-сервера: false - использовать URL из сертификата пользователя; true - использовать URL из настройки radius_eap_tls_ocsp_url. По умолчанию false. RADIUS_EAP_TLS_OCSP_URL: http://127.0.0.1/ocsp # URL для обращения к OCSP-серверу (разрешен только http-режим). RADIUS_EAP_TLS_OCSP_SOFTFAIL: false # Поведение в случае недоступности OCSP-сервера (false | true): false - прекратить аутентификацию, если не удается получить доступ; true - продолжить аутентификацию без проверки отзыва сертификата, если OCSP-сервер не доступен. RADIUS_EAP_TLS_OCSP_TIMEOUT: 0 # Таймаут обращения к серверу OCSP (секунды). По умолчанию 0. RADIUS_EAP_TLS_OCSP_USE_NONCE: true # Включить одноразовый код nonce в запрос на проверку сертификата для предотвращения подмены запроса (false | true): false - не включать, true - включить. По умолчанию true. |
Примените внесенные настройки с помощью рестарта контейнера naice-radius:
sudo docker compose down naice-radius && sudo docker compose up -d naice-radius |
Проверить что контейнер с naice-radius запущен успешно:
$ sudo docker compose ps -a naice-radius NAME COMMAND SERVICE STATUS PORTS naice-radius "/docker-entrypoint.…" naice-radius running (healthy) 0.0.0.0:1812-1813->1812-1813/udp, 0.0.0.0:9812->9812/tcp, :::1812-1813->1812-1813/udp, :::9812->9812/tcp |
Если контейнер не запущен, надо просмотреть логи на предмет ошибок командой:
$ sudo docker compose logs naice-radius |
Замену сертификатов можно выполнить двумя путями:
Заменить файлы сертификата на сервере на новые с тем же самым именем, перейти в папку установки NAICE и выполнить рестарт сервиса NAICE-RADIUS:
sudo docker compose stop naice-radius && sudo docker compose up -d naice-radius |
Скопировать новые файлы сертификата и сервера ЦС. Если были изменены имена файлов, необходимо в плейбуке ansible исправить значения переменных и выполнить повторный запуск плейбука:
ansible-playbook install-naice.yml -i hosts.yml |
При обновлении переменная naice_docker_path должна соответствовать ранее используемой папки установки (по умолчанию -/etc/docker-naice). В противном случае произойдет установка нового экземпляра NAICE в новую папку, что приведет к неработоспособности системы! |
Настройка сетевых устройств, политик аутентификации и авторизации, внешних источников идентификации не имеет особенностей и далее в приведенной инструкции не рассматривается. Предполагается, что эти сущности уже настроены. Пример настроек можно посмотреть в v1.0_4. Быстрый запуск (Quickstart).
Авторизация пользователей с использованием протокола EAP-TLS имеет следующие особенности:
Работа с OCSP-сервером поддержана только по протоколу HTTP с реализацией MS Windows Server! |
Настройка выполняется в разделе Администрирование → Управление идентификацией → Цепочки идентификаций при создании или редактировании цепочки идентификаций:

Необходимо включить настройку , после этого станет доступен выбор атрибутов:
Сравнение значения выбранного атрибута выполняется для источников типа ACTIVE DIRECTORY или LDAP со значением атрибута, выбранного в поле Subject Name Attribute.
Для внутреннего источника идентификации (Internal DB) сравнение выполняется со значением указанным в поле Логин пользователя. Значение в поле должно соответствовать значению в выбранном атрибуте для успешной проверки аутентификации.
Если сертификат пользователя не содержит атрибут, используемый для идентификации, запрос на аутентификацию будет отклонен. |
Аутентификация пользователя без проверки соответствия имени пользователя или выбранного атрибута сертификата только по факту валидности сертификата невозможна! |
Далее приведен пример настройки проверки сертификата по атрибуту Subject - Common Name с использованием ранее настроенного источника данных AD:

Настройка возможности использовать протокол EAP-TLS выполняется в разделе Политики → Элементы → Разрешенные протоколы. В списке разрешенных протоколов по умолчанию Default protocols поддержка протокола уже включена. Если создается новый список доступных протоколов, необходимо включить поддержку EAP-TLS:




Пример успешной авторизации в разделе Мониторинг → RADIUS:

Пример, отображаемый при нажатии иконки в столбце Подробнее для пользователя:

Выпуск и распространение сертификатов может выполняться средствами центра сертификации ОС Windows Server. В данной статье этот способ не рассматривается, рекомендуется обратиться к документации производителя. Далее будет рассмотрено управление сертификатами на компьютере с ОС Windows 10. |
Если запрос на выпуск сертификата не был создан на компьютере, на который выполняется импорт сертификата под той же УЗ, потребуется сформировать один файл, содержащий сертификат и ключ (например контейнер PFX). |
Файл сертификата пользователя, а также сертификат ЦС требуется передать на клиентский компьютер. Для добавления сертификатов потребуются права администратора. Добавление сертификатов выполняется через консоль MMC.
В меню Пуск → Выполнить (WIN + R), ввести mmc и нажать Enter:

В появившемся окне Контроль учетных записей подтвердить (нажать кнопку Да) для доступа к консоли управления MMC.
В открывшемся окне управления оснасткой в меню Файл → Добавить или удалить оснастку выбрать Сертификаты:

Нажать Добавить. В открывшемся окне выбрать моей учетной записи пользователя:

Нажать Готово, затем нажать ОК.
Откроется консоль Сертификаты - текущий пользователь.
Если импорт сертификата ЦС, который отвечает за выпуск сертификатов пользователей был выполнен ранее, данное действие выполнять не требуется. |
Раскрыть список хранилищ сертификатов и правой кнопкой мыши выбрать Доверенные корневые центры сертификации. В открывшемся меню выбрать Все задачи → Импорт...:

После нажатия на Импорт... откроется окно выбора сертификатов. Выбрать сертификат ЦС:

Нажать Далее и убедиться, что импорт сертификата ЦС выполняется в хранилище Доверенные корневые центры сертификации:

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

Последовательно друг за другом нажать Да и нажать ОK после появления сообщения об успешном импорте сертификата.
При импорте сертификат пользователя должен содержать в одном файле сертификат и его ключ. Или же запрос на выпуск импортируемого сертификата должен быть выполнен на данном компьютере под той же УЗ, под которой выполняется импорт сертификата. |
В списке хранилищ сертификатов выбрать Личное и нажать на правую кнопку мыши. В открывшемся меню выбрать Все задачи → Импорт..., выбрать сертификат пользователя:

Нажать Далее. Откроется окно, в котором потребуется ввести пароль от ключа сертификата:

Ввести пароль и нажать Далее, в следующем окне Далее.
В окне завершения импорта убедиться, что сертификат импортируется в хранилище Личное:

Нажать Готово → ОК в сообщении об успешном импорте сертификатов.
Перейти в папку Личное → Сертификаты. Выбрать ранее импортированный сертификат и дважды нажать на него. Откроется окно со сведениями о сертификате:

Убедиться, что сертификат пользователя корректен и есть надпись внизу: Есть закрытый ключ для этого сертификата.
Нажать ОK и закрыть консоль управления сертификатами, на предложении сохранить ответить Нет - это не повлияет на установленные сертификаты. Можно сохранить оснастку, чтобы в дальнейшем легко получить доступ к ней.
Для настройки сетевого подключения потребуется перейти Пуск → Параметры → Сеть и Интернет → Ethernet → Настройка параметров адаптера. В открывшемся окне выбрать адаптер, дважды нажать на него левой кнопкой мыши и перейти в окно свойств. Перейти во вкладку Проверка подлинности:

Нажать кнопку Параметры справа от метода проверки подлинности, в открывшемся окне:

Нажать ОK.
На вкладке Проверка подлинности нажать в нижней части на кнопку Дополнительные параметры, в открывшемся окне:

Повторно в двух окнах подряд нажать ОК, закрыв вкладку свойств подключения.
После выполнения данных действий подключить компьютер к сети и убедиться в возможности авторизации с использованием сертификата.
Если на компьютере под одной УЗ есть несколько личных сертификатов, то будет предложено выбрать один из них. |
По умолчанию в качестве имени пользователя при выполнении аутентификации по протоколу EAP-TLS используется поле Common Name (CN) сертификата. Чтобы выбрать произвольное имя пользователя, необходимо открыть настройки сетевого подключения: потребуется перейти Пуск → Параметры → Сеть и Интернет → Ethernet → Настройка параметров адаптера. В открывшемся окне выбрать адаптер, дважды нажать на него левой кнопкой мыши и перейти в окно свойств. Перейти во вкладку Проверка подлинности:

Нажать кнопку Параметры справа от метода проверки подлинности, в открывшемся окне:

Включить галочку Использовать для подключения другое имя пользователя. Другие настройки надо выполнить в соответствии с инструкцией выше.
Выполнить подключение к сети.
Перед выполнение подключения к сети требуется свернуть все окна настроек, т. к. форма ввода пароля появляется за ними, без появления окна в панели внизу. |
Откроется окно Выбор сертификата:

Нажать ОK.
Новое имя пользователя будет сохранено только после успешной попытки аутентификации! |
Для настройки подключения потребуется три файла: файл сертификата пользователя, файл ключа сертификата пользователя, файл сертификата ЦС, выпустившего сертификат. |
Перенести файлы на компьютер в отдельную папку.
Перейти в раздел Настройки → Сеть:

Нажать
справа от сетевого подключения, откроется окно настройки, перейти во вкладку Безопасность:

Нажать Apply.
После выполнения данных действий подключить компьютер к сети и убедиться в возможности авторизации с использованием сертификата.
При необходимости можно создать запрос на выпуск сертификата RADIUS для работы EAP-TLS непосредственно на сервере NAICE или хосте, с которого выполняется запуск плейбуков ansible, с помощью входящий в состав дистрибутивов Linux утилиты openssl:
openssl req -newkey rsa:2048 -nodes -keyout trusted_server.k -out naice.crs -subj "/CN=naice.test.loc" -addext "keyUsage = digitalSignature, keyEncipherment" -addext "extendedKeyUsage = serverAuth, clientAuth" |
В результате будет создано два файла:
trusted_server.k (при необходимости можно использовать другое имя файла);naice.crs.Используя файл запроса на сертификат необходимо выпустить сертификат RADIUS-сервера через УЦ, который используется в организации (например, на базе Windows Server) с именем trusted_server_chain.crt или другим требуемым именем.
Если выпускающий УЦ одновременно является корневым, то достаточно одного сертификата RADIUS. Если же выпускающий УЦ является подчинённым другого УЦ, то требуется сформировать цепочку сертификатов из сертификатов УЦ, начиная с корневого, + сертификата RADIUS, и положить их в один файл. |
Приведенные примеры команд используют для выпуска сертификатов OpenSSL версии 3.0.13.
Выпустить корневой сертификат ЦС:
openssl req -x509 -new -newkey rsa:2048 -keyout ca.key -out ca.crt -days 3650 -subj "/C=RU/ST=Russia/L=Test/O=Test ORG/OU=QA/CN=ca.test.loc" -addext "keyUsage = digitalSignature, keyEncipherment, keyCertSign" |
Ввести пароль ключа сертификата ЦС. Данный пароль будет необходимо использовать при выпуске любого сертификата:
$openssl req -x509 -new -newkey rsa:2048 -keyout ca.key -out ca.crt -days 3650 -subj "/C=RU/ST=Russia/L=Test/O=Test ORG/OU=QA/CN=ca.test.loc" -addext "keyUsage = digitalSignature, keyEncipherment, keyCertSign" Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- |
Если пароль к ключу сертификата не требуется, необходимо добавить опцию -nodes при генерации ключа сертификата:
openssl req -x509 -new -newkey rsa:2048 -nodes -keyout ca.key -out ca.crt -days 3650 -subj "/C=RU/ST=Russia/L=Test/O=Test ORG/OU=QA/CN=ca.test.loc" -addext "keyUsage = digitalSignature, keyEncipherment, keyCertSign" |
В результате будет создано два файла ca.pem и ca.key.
Создать файл конфигурации server.cnf, который будет отвечать за подпись запроса на сертификат для сервера:
[ signing_req ] keyUsage = digitalSignature, keyEncipherment extendedKeyUsage = serverAuth, clientAuth |
Создать запрос на сертификат для RADIUS-сервера:
openssl req -new -newkey rsa:2048 -keyout radius.key -out radius.csr -subj "/C=RU/ST=Russia/L=Test City/O=Tester's ORG/OU=QA/CN=radius.test.loc" |
Выпустить сертификат на основе ранее созданного запроса с использованием файла конфигурации server.cnf:
openssl x509 -req -in radius.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile server.cnf -extensions signing_req -out radius.crt |
В итоге получится два файла, которые потребуются в настройках NAICE-RADIUS: radius.crt и radius.key.
Создать файл конфигурации clients.cnf, который будет отвечать за подпись запроса на сертификат для сервера:
[ signing_req ] keyUsage = digitalSignature, keyEncipherment extendedKeyUsage = clientAuth |
Создать запрос на сертификат для RADIUS-сервера:
openssl req -new -newkey rsa:2048 -keyout client1.key -out client1.csr -subj "/C=RU/ST=Russia/L=Test City/O=Tester's ORG/OU=QA/CN=client.test.loc" |
Выпустить сертификат на основе ранее созданного запроса с использованием файла конфигурации server.cnf:
openssl x509 -req -in client1.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile clients.cnf -extensions signing_req -out client1.crt |
В итоге будет создано два файла, которые потребуются в настройках пользователя: client1.crt и client1.key.
Сертификаты, создаваемые ЦС Windows Server, могут быть сформированы в DER-кодировке. Такой сертификат требует преобразования перед использованием в NAICE-RADIUS или пользователем с ОС Linux. Конвертация может быть выполнена утилитой OpenSSL:
openssl x509 -inform der -in client1.cer -out client1.crt |
Для использования сертификата в ОС Windows его требуется преобразовать в формат контейнера сертификата. Конвертация может быть выполнена утилитой OpenSSL (потребуется ввести пароль от ключа сертификата и задать пароль контейнера):
openssl pkcs12 -export -out client1.pfx -inkey client1.key -in client1.crt |
Извлечение сертификатов из контейнера (потребуется ввести пароль контейнера):
openssl pkcs12 -in client1.pfx -nokeys -out client1.pem |
Следует иметь ввиду, что в случае, если в контейнере содержаться несколько сертификатов, все они будут извлечены и записаны в один файл.
Извлечение ключа сертификата из контейнера (потребуется ввести пароль контейнера и задать пароль закрытого ключа):
openssl pkcs12 -in client1.pfx -nocerts -aes256 -out client1.key |
Извлечение ключа сертификата PEM, если в один файл записаны ключ и сертификаты (потребуется ввести и повторно задать пароль ключа):
openssl rsa -aes128 -in client1.pem -out client1.key |