- Взаимодействие с браузером
- Виды ssl-сертификатов
- Генерация сертификата
- Генерация сертификата let’s encrypt на сервере
- Как получить официальный сертификат для сайта
- Как посмотреть информацию о сертификате
- Как устроен ssl-сертификат
- Конфигурирование openssl
- Несколько фактов о startssl
- Подтверждение бесплатного ssl-сертификата через dns
- Подтверждение по почте
- Поиск подключенных устройств
- Полезные ссылки
- Получение бесплатного ssl-сертификата через хостинг-провайдера
- Получение информации об устройстве
- Получение сертификата
- Получение сертификата в панели управления
- Получение сертификата у провайдера
- Проходим проверку (2-й уровень верификации)
- Работа с ключевыми парами гост р 34.10-2001
- Работа с сертификатами
- Работа с сертификатами в php
- Расшифрование данных, полученных с сервера, на клиенте
- Сертификат выдается при регистрации в системе
- Сертификат уже имеется на токене, выдан внешним уц
- Смена pin-кода
- Создание самоподписанного сертификата на сервере
- Строгая аутентификация на портале
- Установка ssl-сертификата на сервер
- Через ispmanager
- Шифрование данных на клиенте для сервера
Взаимодействие с браузером
В браузеры встроены сертификаты всех официальных удостоверяющих центров:
Виды ssl-сертификатов
Различают три вида SSL-сертификатов.
- платные официальные сертификаты, выданные одним из доверенных центров;
- бесплатные сертификаты от Let’s Encrypt;
- самоподписанные (самозаверенные, self-signed certificate).
Генерация сертификата
Идем в раздел Certificates Wizard и там выбираем Web Server SSL/TSL Certificate
Далее у нас 2 варианта — либо нажать на Skip и ввести запрос на генерацию сертификата, либо генерировать все в мастере. Допустим, запроса сертификата у нас нет, поэтому будем генерировать все в данном мастере.
Вводим пароль для ключа (мин. 10 символов — макс. 32) и размер ключа (20484096).
Получаем и сохраняем ключ.
Выбираем домен, для которого будем генерировать сертификат (домен должен быть уже подтвержден).
Нам дают право на включение в сертификат один поддомен — пусть будет стандартный www
Получили немного информации о сертификате, жмем на Continue.
Теперь ждем подтверждения сотрудником StartSSL сертификата. Обещают в течении 3-х часов, однако на практике все происходит намного быстрее, мне пришлось ждать 10 минут. Ранее заказывал ночью — примерно за такое же время подтверждали запрос.
Генерация сертификата let’s encrypt на сервере
Пользователи услуги VPS и выделенных серверов могут применить специальное программное обеспечение от Let’s Encrypt и создать бесплатный сертификат для сайтов на свой сервер. Также существует механизм автоматического обновления этих сертификатов.
Как получить официальный сертификат для сайта
Для большинства сайтов будет достаточно установить SSL-сертификат начального уровня с проверкой домена (DV-сертификаты, от английского Domain Validation).
Время выдачи таких сертификатов занимает лишь несколько минут.1. Зайдите в наш каталог и выберите надежную компанию, предлагающую SSL-сертификаты.2. Зарегистрируйтесь на сайте компании и укажите информацию о себе.3. Подтвердите, что именно вы являетесь владельцем домена.4. Создайте запрос на получение сертификата.5. SSL-сертификат будет сгенерирован автоматически.
Есть несколько способов подтверждения владения доменом:
Как посмотреть информацию о сертификате
Если сайт использует SSL-сертификат, то знак “замок” в адресной строке браузера будет закрыт. Если сертификата нет, то открыт.
Браузер предоставляет пользователю полную информацию о применяемом на сайте SSL-сертификате.
1. Чтобы просмотреть ее в браузере Google Chrome, нажмите на значок в начале адресной строки браузера.
2. Выберите в меню пункт “Сертификат”.
3. Открывшееся окно покажет всю информацию о сертификате:
- для какого домена создан;
- название выпустившей сертификат организации;
- срок действия сертификата.
4. Специалисты могут просмотреть дополнительную техническую информацию о сертификате и участвовавших в его выпуске организациях в закладках “Details” и “Certification Path”.
Как устроен ssl-сертификат
SSL (англ. Secure Sockets Layer переводится как “слой защищенных подключений”) – это криптографический протокол, который создан для безопасного обмена и хранения информации на сайтах.
Официальные SSL-сертификаты распространяются в виде набора текстовых файлов – ключей. SSL-сертификаты различаются по используемому методу проверки прав владельца на его выпуск. Самый простой вариант – это проверка прав владения доменом. В более сложных вариантах сертификатов, которые обеспечивают защиту инфраструктуры целого предприятия, нужна проверка информации о компании.
Цифровой сертификат содержит следующую информацию:
- назначение сертификата об обеспечении безопасного соединения между браузером и сервером;
- доменное имя, на которое оформлен SSL-сертификат;
- юридическое лицо, которое владеет сертификатом;
- физическое местонахождение владельца сертификата (город, страна);
- дату выдачи и дату окончания действия сертификата;
- название удостоверяющего центра сертификации;
- используемый алгоритм шифрования;
- публичный ключ, применяемый сервером.
Эта информация позволяет браузеру клиента:1. Проверить достоверность сертификата.2. Установить, что он был выпущен доверенной организацией специально для конкретного домена.3. Сделать вывод, что устанавливаемое с сервером соединение – безопасное.
Конфигурирование openssl
Openssl поддерживает российские криптоалгоритмы, начиная с версии 1.0. Для того, чтобы их использовать, в openssl требуется подгружать engine gost. В большинстве дистрибутивов openssl эта библиотека присутствует. Чтобы engine подгружалась, можно прописать ее в конфигурационном файле openssl:
[openssl_def]
engines = engine_section
[engine_section]
gost = gost_section
[gost_section]
engine_id = gost
default_algorithms = ALL
Если конфигурационный файл openssl не расположен в стандартном месте, то путь к нему можно задать через переменную окружения OPENSSL_CONF.
Другим вариантом подгрузки engine gost является ее передача в параметрах командной строки утилиты openssl.
Если engine gost не расположена в стандартном месте, то через переменную окружения OPENSSL_ENGINES можно задать путь к директории, в которой openssl будет ее искать.
Для получения информации о том, успешен ли был вызов утилиты openssl или нет, с возможностью уточнения ошибки, требуется парсить stdout и stderror. В конце статьи приведена ссылка на PHP-скрипт, который использует данную утилиту.
Теперь перейдем к реализации законченных пользовательских сценариев.
Несколько фактов о startssl
- 25 мая 2021 StartSSL был подвергнут атаке сетевых взломщиков (в простонародии хакеров), однако получить фиктивные сертификаты им не удалось. Закрытый ключ, лежащий в основе всех операций, хранится на отдельном компьютере, не подключенном к интернету.
- StartSSL поставляет помимо SSL сертификатов для Web, сертификаты для шифрования почты (S/MIME), для шифрования серверов XMPP (Jabber), сертификаты для подписи ПО Object code signing certificates).
- StartSSL проверяет верность установки сертификатов. После установки сертификата (через некоторое время) я получил уведомление о отсутствии промежуточного сертификата, и ссылка на информацию по установки.
После установки промежуточного сертификата пришло соответствующее письмо. - StartSSL поддерживается множеством ПО: Android, Camino, Firefox, Flock, Chrome, Konqueror, IE, Mozilla Software, Netscape, Opera, Safari, SeaMonkey, Iphone, Windows
- Дружелюбная поддержка на русском языке
- Сравнительная таблица вариантов верификации
- За 59.90$ вы можете создать ∞ количество WildCard сертификатов сроком на 3 года (350 дней, в течении которых вы можете перевыпускать сертификат 2 года, на которые можно выдать сертификат).
- Отзыв сертификата платный — 24,90$. 2-й класс верификации позволяет пересоздать сертификат (насколько я понял, всего один раз). Extended Validation сертификаты освобождены от этого сбора.
Подтверждение бесплатного ssl-сертификата через dns
На этапе выбора подтверждения кликаем на «DNS», где получаем нужные данные для ввода.
На следующем шаге видим, что система мониторит записи для подтверждения.
Переходим к хостинг-провайдеру (или другой интерфейс, куда через NS был делегирован домен) и переходим к редактированию DNS.
Добавляем новую TXT-запись.
Вводим выданные нам значения.
Подтверждение по почте
В этом случае система предложит написать на одну из почт:
В этом случае будет отправлено письмо с кодом на указанный электронный адрес, через которое можно будет подтвердить информацию.
В этом случае лучше всего:
Если указанной почты нет среди аккаунтов, то следует ее создать, например, в интерфейсе Яндекс.Коннекта это выглядит так:
Отправляем письмо для проверки.
В системе видно, что сообщение отправлено.
Далее приходит письмо на почту, где нужно скопировать проверочный код и перейти на страницу верификации.
На проверочной странице вводим ключи и нажимаем на «Next».
Закрываем страницу.
В ZeroSSL обновляем статус заявки.
Видим, что все прошло успешно и кликаем на «Install Certificate».
Скачиваем бесплатный SSL-сертификат через кнопку «Download Certificate (.zip).
При необходимости можно сказать в разных форматах, например, для:
- Apache;
- AWS;
- cPanel
- NGINX;
- Ubuntu;
- И многих других.
Далее переходим к установке его на сервер.
Важно! Одни аккаунт может иметь до трех доменов с сертификатами бесплатно.
Поиск подключенных устройств
Любой клиентский сценарий начинается с поиска подключенных к компьютеру USB-устройств Рутокен. В контексте данной статьи акцент делается на устройство Рутокен ЭЦП.
var devices = Array();
try
{
devices = plugin.enumerateDevices();
}
catch (error)
{
console.log(error);
}
При этом возвращается список идентификаторов подключенных устройств. Идентификатор представляет собой число, связанное с номером слота, к которому подключено устройство. При повторном перечислении это число может отличаться для одного и того же устройства.
Рутокен Плагин определяет все подключенные к компьютеру USВ-устройства Рутокен ЭЦП, Рутокен PINPad, Рутокен WEB. Поэтому следующим шагом следует определить тип устройства.
Полезные ссылки
Данные ссылки могут быть полезны разработчикам инфосистем с поддержкой ЭЦП на базе Рутокен Плагин и openssl:
Демосистема Рутокен ПлагинWEB-сервис генерации ключей, формирования запросов, управления сертификатами, формирования шаблонов запросов на сертификаты Документация на Рутокен ПлагинДокументация по использованию утилиты openssl с российскими крипталгоритмамиПример скрипта на PHP, использующего утилиту openssl
Получение бесплатного ssl-сертификата через хостинг-провайдера
Если хостинг-провайдер предоставляет бесплатный SSL-сертификат, то можно
воспользоваться им. Так его предоставляют:
Например, в случае с Timeweb достаточно посетить
административную панель после чего перейти во вкладку «SSL-сертификаты» и нажимаем на
«Заказать».
Теперь выбираем «Let’s Encrypt»
(бесплатный) и домен, которому он будет применен.
Важно! Для того, чтобы воспользоваться данным методом
необходимо делегировать сайт под управление компании хостинга при помощи А-записи.
Получение информации об устройстве
Для определения типа устройства следует использовать функцию
с параметром TOKEN_INFO_DEVICE_TYPE. Значение этой константы содержится в объекте плагина.
var type;
try
{
type = plugin.getDeviceInfo(deviceId, plugin.TOKEN_INFO_DEVICE_TYPE);
}
catch (error)
{
console.log(error);
}
switch (type)
{
case plugin.TOKEN_TYPE_UNKNOWN:
message = "Неизвестное устройство";
break;
case plugin.TOKEN_TYPE_RUTOKEN_ECP:
message = "Рутокен ЭЦП";
break;
case plugin.TOKEN_TYPE_RUTOKEN_WEB:
message = "Рутокен Web";
break;
case plugin.TOKEN_TYPE_RUTOKEN_PINPAD_2:
message = "Рутокен PINPad";
break;
}
Также с помощью функции getDeviceInfo можно получить:
Получение сертификата
Нам осталось только получить сертификат и установить его на сервере. Идем в Tool Box -> Retrieve Certificate, выбираем домен и копируем сертификат.
Про установку не буду писать, информация есть на хабре и на StartSSL.
Получение сертификата в панели управления
В большинство популярных панелей управления хостингом встроена поддержка сертификатов от Let’s Encrypt.
Например, в ISPmanager вы можете быстро создать сертификат, просто указав в соответствующей форме название домена.
Получение сертификата у провайдера
Получить бесплатный SSL-сертификат у провайдера можно в один клик.
Например, у провайдера Beget достаточно просто нажать кнопку “Установить”.
Проходим проверку (2-й уровень верификации)
Для снятия ограничений бесплатного сертификата нужно пройти идентификацию. Для этого в Validations Wizard выбираем Personal Identity Validation, проходим несколько шагов и нам предлагают загрузить документы
Для загрузки документов нужно только выбрать их в поле. Загрузить нужно не менее 2-х документов, подтверждающих вашу личность (главный разворот паспорта, водительские права, удостоверение личности, карточку социального обеспечения, свидетельство о рождении и т.д., я загружал главный разворот паспорта и студенческого билета). Могут запросить дополнительные документы — у меня запросили счет за телефон, в котором указан мой адрес, номере телефона и имя, в качестве альтернативы можно получить аналоговой почтой письмо для верификации адреса.
Далее вам нужно будет ввести данные своей кредитной картыPayPal. Идем в Tool Box ->Add Credit Card | PayPal | Ticket
Все, на этом подготовка к верификации окончена. Вам должно будет прийти письмо от поддержки с дальнейшими инструкциями. По окончании верификации вы сможете выпускать WildCart сертификаты в течении 350 дней. Далее нужно будет проходить проверку заново.
Работа с ключевыми парами гост р 34.10-2001
1. Для получения декрипторов ключевых пар, хранящихся на устройстве, требуется ввод PIN-кода. Следует понимать, что само значение закрытого ключ получено быть не может, так как ключ является неизвлекаемым.
var keys = Array();
try
{
plugin.login(deviceId, "12345678");
keys = plugin.enumerateKeys(deviceId, null);
}
catch (error)
{
console.log(error);
}
2. Для генерации ключевой пары требуется ввод PIN-кода. При генерации ключа параметры могут быть выбраны из набора:
Пример генерации ключевой пары ГОСТ Р 34.10-2001:
var options = {};
var keyId;
try
{
keyId = plugin.generateKeyPair(deviceId, "A", null, options);
}
catch (error)
{
console.log(error);
}
3. С помощью функции deleteKeyPair ключевая пара может быть удалена с токена.
Работа с сертификатами
1. На токене могут храниться 3 категории сертификатов:
Работа с сертификатами в php
День добрый, люди добрые!
Первый раз приходится работать с сертификатами в PHP.
Задача у меня такое: авторизацию через сертификаты, на сайте конечно же.
Сертификат в закрытом виде , то есть расширение в виде *.p12.
Как я понял это #PKCS12 = cer private_key.
В сети есть примеры, как прочитать с помощью библиотеки open SSL(openssl_pkcs12_read).
Но оно выдает ошибку :
error:0D06B08E:asn1 encoding routines:ASN1_D2I_READ_BIO:not enough data
Сам код выглядит так:
<?php
print 'OpenSSl Certificate Test!';
$filename = 'rai.p12';
$password = '123456';
$results = array();
$worked = openssl_pkcs12_read($filename, $results, $password);
if($worked) {
echo '<pre>', print_r($results, true), '</pre>';
} else {
echo openssl_error_string();
}
?>
PS: хотелось бы узнать подробнее, как работают сертификаты , как пользоваться с функциями openssl, буду рад к любым советам/комментам/ссылкам.
Расшифрование данных, полученных с сервера, на клиенте
Для расшифрования данных, полученных с сервера, предназначена функция cmsDecrypt. Так как сервер шифрует для клиента, используя его сертификат, то в качестве keyId должен быть передан дескриптор закрытого ключа клиента, соответствующий открытому ключу в сертификате.
Этот дескриптор является уникальным и неизменным и потому может быть сохранен в учетной записи пользователя на сервере. Кроме того, дескриптор ключа пользователя может быть получен явным образом, путем вызова функции getKeyByCertificate.
Шифрование данных на сервере для клиента:
Сертификат выдается при регистрации в системе
Последовательность вызовов в клиентском скрипте будет следующей:
Далее запрос отправляется на сервер, где на его основе выдается сертификат.Для этого на сервере должен быть установлен и правильно сконфигурирован openssl версии от 1.0 и развернут функционал УЦ.
1. Генерация улюча УЦ:
openssl genpkey -engine gost -algorithm GOST2001 -pkeyopt paramset:A -out ca.key
После этого в файле ca.key будет создан закрытый ключ
2. Создание самоподписанного сертификата УЦ:
openssl req -engine gost -x509 -new -key ca.key -out ca.crt
После ввода необходимой информации об издателе в файле ca.crt будет создан сертификат УЦ.
Сертификат уже имеется на токене, выдан внешним уц
Ключевая пара при этом должна быть создана в формате, совместимом с библиотекой rtPKCS11ECP для Рутокен ЭЦП.
Последовательность вызовов на клиенте:
Подпись получается в base64-формате. При проверке ее на сервере с помощью openssl подпись следует обрамить заголовками, чтобы сделать из нее PEM. Выглядеть подобная подпись будет примерно так:
-----BEGIN CMS-----
MIIDUQYJKoZIhvcNAQcCoIIDQjCCAz4CAQExDDAKBgYqhQMCAgkFADCBygYJKoZI
hvcNAQcBoIG8BIG5PCFQSU5QQURGSUxFIFVURjg PFY 0JLRi9C/0L7Qu9C90LjR
gtGMINCw0YPRgtC10L3RgtC40YTQuNC60LDRhtC40Y4/PCE c2VydmVyLXJhbmRv
bS1kYXRhZTI6ZGE6MmM6MDU6MGI6MzY6MjU6MzQ6YzM6NDk6Nzk6Mzk6YmI6MmY6
YzU6Mzc6ZGI6MzA6MTQ6NDQ6ODM6NjY6Njk6NmI6OWY6YTU6MDk6MzQ6YmY6YzQ6
NzY6YzmgggGeMIIBmjCCAUegAwIBAgIBATAKBgYqhQMCAgMFADBUMQswCQYDVQQG
EwJSVTEPMA0GA1UEBxMGTW9zY293MSIwIAYDVQQKFBlPT08gIkdhcmFudC1QYXJr
LVRlbGVjb20iMRAwDgYDVQQDEwdUZXN0IENBMB4XDTE0MTIyMjE2NTEyNVoXDTE1
MTIyMjE2NTEyNVowEDEOMAwGA1UEAxMFZmZmZmYwYzAcBgYqhQMCAhMwEgYHKoUD
AgIjAQYHKoUDAgIeAQNDAARADKA/O1Zw50PzMpcNkWnW39mAJcTehAhkQ2Vg7bHk
IwIdf7zPe2PxHyAr6lH stqdACK6sFYmkZ58cBjzL0WBwaNEMEIwJQYDVR0lBB4w
HAYIKwYBBQUHAwIGCCsGAQUFBwMEBgYpAQEBAQIwCwYDVR0PBAQDAgKkMAwGA1Ud
EwEB/wQCMAAwCgYGKoUDAgIDBQADQQD5TY55KbwADGKJRK bwCGZw24sdIyayIX5
dn9hrKkNrZsWdetWY3KJFylSulykS/dfJ871IT 8dXPU5A7WqG4 MYG7MIG4AgEB
MFkwVDELMAkGA1UEBhMCUlUxDzANBgNVBAcTBk1vc2NvdzEiMCAGA1UEChQZT09P
ICJHYXJhbnQtUGFyay1UZWxlY29tIjEQMA4GA1UEAxMHVGVzdCBDQQIBATAKBgYq
hQMCAgkFADAKBgYqhQMCAhMFAARAco5PumEfUYVcLMb1cnzETNOuWC8Goda8pdUL
W5ASK tztCwM7wpXgAy Y6/sLtClO9sh8dKnAaEY2Yavg3altQ==
-----END CMS-----
Проверка подписи на сервере:
Смена pin-кода
Пример смены PIN-кода на устройстве:
var options = {};
try
{
plugin.changePin(deviceId, "12345678", "12345671", options);
}
catch (error)
{
console.log(error);
}
Здесь первым параметром выступает старый PIN-код, а вторым новый PIN-код.
Создание самоподписанного сертификата на сервере
Самоподписанные сертификаты генерируются владельцем сервера и домена самостоятельно. Подходит только для владельцев виртуальных и выделенных серверов под управлением Linux.
Самоподписанные сертификаты:
Но такие сертификаты могут:
Для создания самоподписанного сертификата используется набор инструментов из библиотеки OpenSSL.
Для генерации SSL-сертификата из командной строки используйте команду:
# openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout /home/ssl/my_key.key -out /home/ssl/my_cert.crt
Будут запрошены:
- пароль для файла с сертификатом;
- данные о владельце сертификата (страна, город, название организации).
Самый главный параметр, который попросит ввести программа OpenSSL – это Common Name – адрес домена, для которого используется сертификат.
После выполнения данной команды на сервере в каталоге /home/ssl будут сгенерированы файлы сертификата: публичный ключ – в файле my_cert.crt и приватный ключ – в файле my_key.key.
Строгая аутентификация на портале
Общая схема аутентификации, используемая в Рутокен Плагин, выглядит следующим образом:
Реализация данной схемы ничем принципиально не отличается от «Регистрация, сертификат уже имеется, выдан внешним УЦ».
Установка ssl-сертификата на сервер
В первую очередь распаковываем архив с сертификатом и видим, что он состоит из:
- certificate.crt (сертификат);
- private.key (приватный ключ);
- ca_bundle.crt (промежуточный сертификат).
Данный пункт необходим тем, кто не смог получить его у хостера и приобрел его не у своего провайдера. Для этого посещаем раздел «SSL», где выбираем пункт «Установить».
Вводим в соответствующие поля свой файл и завершаем установку.
Важно! Если не имеется навыка работы с интерфейсом хостинг компании (у некоторых провайдеров отсутствует возможность загружать сертификат самостоятельно в интерфейсе) рекомендуется загрузить архив с сертификатом на сервер и написать в поддержку с просьбой об установке.
Важно! Срок действия сертификата 3 месяца, после чего его потребуется
обновиться, выполнив инструкцию еще раз.
Важно! Если сертификат выдается на поддомен, то потребуется
подтвердить лишь основной домен (соответственно загрузить лишь 1 файл или
установить 1 TXT-запись).
Через ispmanager
Следует посетить раздел «WWW»-«SSL-сертификаты»,
после чего кликнуть на «Создать».
Выбираем пункт «Существующий».
Ставим данные из файлов в нужные поля и даем имя
сертификату.
Важно! Если не получается воспользоваться ни первым ни
вторым способом или данного раздела (SSL) нет в административной панели (как, например, в SprintHost), то Вы можете
загрузить сертификаты на свой сервер и создать тикет хостинг-провайдеру для
установки.
Шифрование данных на клиенте для сервера
Для того, чтобы обеспечить конфиденциальность обмена данными между клиентом и сервером в плагине предусмотрено шифрование/расшифрование данных. Данные шифруются в формате CMS. Для того, чтобы зашифровать данные в формате CMS, требуется сертификат открытого ключа «адресата».
При этом расшифровать такое сообщение сможет только владелец закрытого ключа. При шифровании данных для сервера рекомендуется хранить сертификат сервера на Рутокен ЭЦП. Этот сертификат может быть записан на устройство при регистрации пользователя на портале.
Для этого следует использовать функцию importCertificate, при этом в качестве параметра category следует передать CERT_CATEGORY_OTHER. Для использования в функции cmsEncrypt нужно получить тело сертификата по его дескриптору с помощью функции getCertificate.
При этом дескриптор является уникальным и неизменным и может быть сохранен в учетной записи пользователя на сервере при импорте сертификата сервера. Для того, чтобы использовалось аппаратное шифрование по ГОСТ 28147-89, требуется установить опцию useHardwareEncryption в true. В противном случае будет использована быстрая программная реализация ГОСТ 28147-89.
Последовательность вызовов приведена на картинке:
Шифрование данных на клиенте:
try
{
var recipientCert = plugin.getCertificate(deviceId, certRecId);
}
catch (error)
{
console.log(error);
}
var options = {};
options.useHardwareEncryption = true;
var cms;
try
{
cms = plugin.cmsEncrypt(deviceId, certSenderId, recipientCert, data, options);
}
catch (error)
{
console.log(error);
}
Расшифрование данных на сервере, перед расшифрованием сообщение нужно обрамить PEM-заголовками “—–BEGIN PKCS7—–” и “—–END PKCS7—–“:
openssl smime -engine gost -decrypt -in message.cms -inform PEM -recip recipient.crt -inkey recipient.key
recipient.crt — сертификат того, для кого зашифровано сообщение, recipient.key — ключ того, для кого зашифровано сообщение.
